首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

vc控件消息传递有关问题

2012-09-25 
vc控件消息传递问题现状:我用Atl做了一个控件CMyCtrl,控件上有个Edit文本框.目的:我在Edit内填写几个字,然

vc控件消息传递问题
现状: 我用Atl做了一个控件CMyCtrl,控件上有个Edit文本框.
目的: 我在Edit内填写几个字,然后想用方向键控制光标在文本框内移动.


现象:
1.当我用vc,vb,C#之类的微软家的东东制作调用demo时.按一下方向键(如VK_LEFT)一次一个字符,光标移动很正常.
在CMyCtrl的PreTranslateAccelerator(LPMSG pMsg, HRESULT& hRet)函数内跟踪,在收到VK_LEFT时:
GetFocus到的窗体句柄正是-----------------Edit框
同时pMsg->hwnd中提到的处理者的句柄也是---Edit框


2.当我用delphi写个调用的demo时,怎么按方向键Edit内的光标也不反应.
在CMyCtrl的PreTranslateAccelerator(LPMSG pMsg, HRESULT& hRet)函数内发现,在收到VK_LEFT时:
GetFocus到的窗体句柄是-----------------Edit框句柄
而pMsg->hwnd中提到的处理者的句柄是-----控件CMyCtrl的句柄.


于是,我在PreTranslateAccelerator下:
SendMessage(::GetFocus(),WM_KEYDOWN,VK_LEFT,0);
结果Edit内得到光标终于动了,可是按一下方向键光标一次跑俩字符,kao!


不知道这个问题是在VC里面提问还是delphi里提问,作为vc coder先在这里泡泡,看能有收获不?


[解决办法]
父窗口类的PreTranslateMessage里过滤WM_KEYDOWN消息
[解决办法]
基于com的应该不会有这样的问题吧。

热点排行