社区
界面
帖子详情
请教各位大虾一个关于WM_GETDLGCODE的问题
wangjiand
2002-12-09 02:19:12
最近写程序自己写了一个显示曲线的视类,为了使视类操作方面,我需要在视类中响应键盘操作。但是发现一个问题,当使用单文档程序,并把单文档的视类基类改为我自己写的视类,此时视类可以截获键盘消息。
但是如果在基于对话框的程序中,创建如此的视图,却无法截获键盘消息,百思不得其解,望会的朋友指点一下。
...全文
173
4
打赏
收藏
请教各位大虾一个关于WM_GETDLGCODE的问题
最近写程序自己写了一个显示曲线的视类,为了使视类操作方面,我需要在视类中响应键盘操作。但是发现一个问题,当使用单文档程序,并把单文档的视类基类改为我自己写的视类,此时视类可以截获键盘消息。 但是如果在基于对话框的程序中,创建如此的视图,却无法截获键盘消息,百思不得其解,望会的朋友指点一下。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wangjiand
2002-12-09
打赏
举报
回复
我的问题是,如果在基于对话框的程序中,创建的视图的窗口函数根本就获得不了键盘消息。那么在对话框中的PreTranslateMessage中该怎样处理呢?
wangjiand
2002-12-09
打赏
举报
回复
TO studentforever
非常谢谢你的文章,不过我的问题并不是那篇文章能回答的。
studentforever
2002-12-09
打赏
举报
回复
在PreTranslateMessage函数中处理
studentforever
2002-12-09
打赏
举报
回复
Keyboard messages/accelerators handling in MFC dialog based applications
http://www.codetools.com/dialog/pretransdialog01.asp
Window 消息大全
消息,就是指Windows发出的
一个
通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的
一个
键都会使Windows发送
一个
消息给应用程序。 消息本身是作为
一个
记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的: type TMsg = packed record hwnd: HWND; //窗口句柄 message: UINT;//消息常量标识符 wParam: WPARAM ;// 32位消息的特定附加信息 lParam: LPARAM ;// 32位消息的特定附加信息 time: DWORD;//消息创建时的时间 pt: TPoint; //消息创建时的鼠标位置 end ; 消息中有什么? 是否觉得
一个
消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可 视对象的句柄(窗口、对话框、按钮、编辑框等)。message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也 可以是自定义的常量。 wParam 通常是
一个
与消息有关的常量值,也可能是窗口或控件的句柄。 lParam 通常是
一个
指向内存中数据的指针。由于WParam、lParam和Pointer都是32位的,因此,它们之间可以相互转换。
WM
_NULL =$0000 //
WM
_CREATE =$0001 //应用程序创建
一个
窗口
WM
_DESTROY = $0002 //
一个
窗口被销毁
WM
_MOVE = $0003 //移动
一个
窗口
WM
_SIZE= $0005 //改变
一个
窗口的大小
WM
_ACTIVATE= $0006 //
一个
窗口被激活或失去激活状态;
WM
_SETFOCUS= $0007 //获得焦点后
WM
_KILLFOCUS= $0008 //失去焦点
WM
_ENABLE= $000A //改变enable状态
WM
_SETREDRAW= $000B //设置窗口是否能重画
WM
_SETTEXT= $000C //应用程序发送此消息来设置
一个
窗口的文本
WM
_GETTEXT = $000D //应用程序发送此消息来复制对应窗口的文本到缓冲区
WM
_GETTEXTLENGTH = $000E //得到与
一个
窗口有关的文本的长度(不包含空字符)
WM
_PAINT = $000F //要求
一个
窗口重画自己
WM
_CLOSE = $0010 //当
一个
窗口或应用程序要关闭时发送
一个
信号
WM
_QUERYENDSESSION= $0011 //当用户选择结束对话框或程序自己调用ExitWindows函数
WM
_QUIT= $0012 //用来结束程序运行或当程序调用postquitmessage函数
WM
_QUERYOPEN = $0013 //当用户窗口恢复以前的大小位置时,把此消息发送给某个图标
WM
_ERASEBKGND = $0014 //当窗口背景必须被擦除时(例在窗口改变大小时)
WM
_SYSCOLORCHANGE = $0015 //当系统颜色改变时,发送此消息给所有顶级窗口
WM
_ENDSESSION = $0016 // 当系统进程发出
WM
_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束
WM
_SYSTEMERROR = $0017 //
WM
_SHOWWINDOW= $0018 //当隐藏或显示窗口是发送此消息给这个窗口
WM
_ACTIVATEAPP = $001C //发此消息给应用程序哪个窗口是激活的,哪个是非激活的;
WM
_FONTCHANGE= $001D //当系统的字体资源库变化时发送此消息给所有顶级窗口
WM
_TIMECHANGE= $001E //当系统的时间变化时发送此消息给所有顶级窗口
WM
_CANCELMODE= $001F //发送此消息来取消某种正在进行的摸态(操作)
WM
_SETCURSOR = $0020 //如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口
WM
_MOUSEACTIVATE = $0021 //当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口
WM
_CHILDACTIVATE = $0022 //发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小
WM
_QUEUESYNC= $0023 //此消息由基
很不错的VB热键HOOK控件及源程序
很不错的VB热键HOOK控件及源程序 可以用代码将多个限制类型用 OR 连接,这样就可以实现,只可用指定的几种组合。形式就不单一了,代码核心不够稳定,可能导致 IDE 异常或崩溃,提高此属性等级可增加 IDE 的安全性.除非你在篡改源码,否则中等强度应该没
问题
,先在热键控件中设置热键,必须是组合键,非组合键除F1~F12外禁止单键设置为热键,热键设置完毕后,转移焦点到这个文本框里面,然后你就可以测试热键了,如果热键组合形式不允许或热键注册失败,则界面显示 "无",热键是即时生效的,设置成功,热键就可以使用了。
TEmbeddedWB D2009 - Version 14.66.1
TEmbeddedWB是
一个
很好的IE编程控件,现支持Delphi2009! =================================== Version 14.66.1 =================================== This version adds some constants for IE8, D2009 compatibility and includes some fixes / changes. * file EWB.inc: Added D2007, D2009 defines. {$IFDEF DELPHI_13_UP} {$ELSE} {$ENDIF} * EWBCore.pas: EnableThemes is set to True by default (I think this makes sense) -> UserInterfaceOptions := [EnableThemes]; * unit TEmbeddedWB.pas - Removed the Wait() in TEmbeddedWB.GetFrame as it could block - Modified Visible Property to work properly. Instead of TControl(TEmbeddedWB).Visible you can write TEmbeddedWB.Visible - Bsalsa UserAgent is not automatically set anytime anymore as it causes some problems. -> Modified SetUserAgent. Renamed RemoveUserAgent to RestoreUserAgent - Fix: Handle M_GET
DLG
CODE
message in TEmbeddedWB.WndProc * unit IEConst: - Added constants that are missing in previous delphi versions: BINDSTATUS_COOKIE_SENT = BINDSTATUS_ACCEPTRANGES + 1; BINDSTATUS_COMPACT_POLICY_RECEIVED = BINDSTATUS_COOKIE_SENT + 1; BINDSTATUS_COOKIE_SUPPRESSED = BINDSTATUS_COMPACT_POLICY_RECEIVED + 1; BINDSTATUS_COOKIE_STATE_UNKNOWN = BINDSTATUS_COOKIE_SUPPRESSED + 1; BINDSTATUS_COOKIE_STATE_ACCEPT = BINDSTATUS_COOKIE_STATE_UNKNOWN + 1; BINDSTATUS_COOKIE_STATE_REJECT = BINDSTATUS_COOKIE_STATE_ACCEPT + 1; BINDSTATUS_COOKIE_STATE_PROMPT = BINDSTATUS_COOKIE_STATE_REJECT + 1; BINDSTATUS_COOKIE_STATE_LEASH = BINDSTATUS_COOKIE_STATE_PROMPT + 1; BINDSTATUS_COOKIE_STATE_DOWNGRADE = BINDSTATUS_COOKIE_STATE_LEASH + 1; BINDSTATUS_POLICY_HREF = BINDSTATUS_COOKIE_STATE_DOWNGRADE + 1; BINDSTATUS_P3P_HEADER = BINDSTATUS_POLICY_HREF + 1; BINDSTATUS_SESSION_COOKIE_RECEIVED = BINDSTATUS_P3P_HEADER + 1; BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = BINDSTATUS_SESSION_COOKIE_RECEIVED + 1; - Added IE8 constants: BINDSTATUS_COOKIE_DATA = BINDSTATUS_SSLUX_NAVBLOCKED + 1; //IE8 BINDSTATUS_SERVER_MIMETYPEAVAILABLE = BINDSTATUS_COOKIE_DATA + 1; //IE8 BINDSTATUS_SNIFFED_CLASSIDAVAILABLE = BINDSTATUS_SERVER_MIMETYPEAVAILABLE + 1; //IE8 BINDSTATUS_64BIT_PROGRESS = BINDSTATUS_SNIFFED_CLASSIDAVAILABLE + 1; //IE8 * unit IEDownloadTools: - Added the new IE8 results to the function BindStatusText: BINDSTATUS_COOKIE_DATA: Result := 'Cookie headers have been received'; //IE8 - Attention: This documentation is preliminary and is subject to chang BINDSTATUS_SERVER_MIMETYPEAVAILABLE: Result := 'Server''s authoritative MIME type reported'; //IE8 - Attention: This documentation is preliminary and is subject to chang BINDSTATUS_SNIFFED_CLASSIDAVAILABLE: Result := 'Class identifier (CLSID) generated from authoritative Content-Type HTTP response header'; //IE8 - Attention: This documentation is preliminary and is subject to chang BINDSTATUS_64BIT_PROGRESS: Result := 'Download progress values are above the maximum 32-bit file size limit.'; //IE8 - Attention: This documentation is preliminary and is subject to chang * Various changes to make it D2009 compatible
WM
_GET
DLG
CODE
message
WM
_GET
DLG
CODE
message Sent to the window procedure associated with a control. By default, the system handles all keyboard input to the control; the system interprets certain types of keyboard input as dialog box navigation keys. To override this defaul.
关于
WM
_GET
DLG
CODE
的一些小技巧
关于
WM
_GETDL
CODE
这个消息
WM
_GETDL
CODE
这个消息可以用来控制对话框管理器的行为。在之前的一篇文章中,我们讲述了如何通过
DLG
C_HASSETSEL这个标志来控制编辑框的自动选择行为。 本来我还想讲一讲其他的一些标志,但是我发现在[知识库83302]中已经讲述的比较全面了,所以我就不打算再来长篇大论一番,而只是把我认为重要的点稍微提一下。 坐好了吗? 在众多标志位中,
DLG
C_WANTMESSAGE是最有用的
一个
。它可以用来控制对话框管理器,实现禁止对话框管理器对指定消息的处理。
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章