我是想当创建了一个Dialog以后,Edit对话框立即相应ON_UPDATE_COMMAND_UI这个消息,这样就要先响应WM_KICKIDLE这个消息。
但是,我发现,当Dialog是OnModal出来的,WM_KICKIDLE这个消息就可以相应,当Dialog是Create出来的时候,WM_KICKIDLE这个消息没有办法响应,ON_UPDATE_COMMAND_UI这个消息自然也没有办法响应。
如何解决这个问题啊?
谢谢各位大虾了
但是,我发现,当Dialog是OnModal出来的,WM_KICKIDLE这个消息就可以相应,当Dialog是Create出来的时候,WM_KICKIDLE这个消息没有办法响应,ON_UPDATE_COMMAND_UI这个消息自然也没有办法响应。
如何解决这个问题啊?
谢谢各位大虾了
当Dialog是Create出来的时候,当前线程继续执行,WM_KICKIDLE这个消息自然就没法响应了。
我也知道这个问题,当Dialog是Create出来的时候,当前线程继续执行,WM_KICKIDLE这个消息自然就没法响应了。
但是,我好像看书上说其实,DoModal and Create其实好像都是非模态对话框的,只是DoModal是把父窗体是屏蔽了?还是什么的
但是,我现在的问题是,我现在是Create出来的,我如何去解决这个问题。
想要响应WM_KICKIDLE, ON_UPDATE_COMMMAND_UI这两个消息呢?
谢谢啦
ON_UPDATE_COMMAND_UI这个消息就是来控制对话框是否被打上钩的阿
这样,我在界面上一些要生成的东西都自动能实现。
就像MeridaWarrior()说的,
OnModal出来的Dialog是线程阻塞的,就是暂停当前线程执行直到Dialog关闭,这样子才会出现空闲IDLE,WM_KICKIDLE这个消息就可以响应;
当Dialog是Create出来的时候,当前线程继续执行,WM_KICKIDLE这个消息自然就没法响应了
但是,难道vc就没有办法能解决这个问题吗?
create出来的Dialog就没有办法响应WM_KICKIDEL这个消息吗?
我想VC肯定是有办法的吧
只是我们现在还不知道吧
那你的edit干嘛用啊?是不是响应相应checkbox?然后传值?
如果这样那直接判断checkbox状态就可以了.
SendMessageToDescendants(WM_IDLEUPDATECMDUI,
(WPARAM)TRUE, 0, TRUE, TRUE);
然后m_Dlg.SendMessage(WM_KICKIDLE, MSGF_DIALOGBOX, lIdleCount++)
我用create方法(必须用create方法,不能DoModal)创建了一个dialog窗体,
而且用ctrl+d也调好了,各个控件之间的Tab顺序,而且也设置了Tabstop属性为true
可是为什么按tab键的时候不管用呢(不能切换且获得tab焦点)?
而且窗体类重载的PreTranslateMessage(MSG* pMsg)函数也不管用。
我不太清楚,用sky++截获消息,发现比domodal少了很多。。尤其是响应键盘的
请问如何在create创建出来的窗体上,实现tab键可以切换控件呢?