"点击Edit改变其背景色彩"帖子及自己的帖子的总结
"点击Edit改变其背景颜色"帖子及自己的帖子的总结
------解决方案--------------------
用IsDialogMessage处理一下就可以了
原帖这里:
点击edit改变其背景颜色
http://bbs.****.net/topics/390320795
wm_command怎么会响应edit啊
http://bbs.****.net/topics/390322236?page=1#post-393258787
帖子里提到的内容较多,简单总结,分为两大类,一类是编辑框自绘问题; 一类是焦点问题。
总结的不对,轻拍,我菜鸟,谢谢.
一、编辑框自绘问题
编辑框的自绘问题
编辑框不存在wm_drawitem,如果要自绘,通过自己的onpaint或者wm_ctlcoloredit.
二、默认焦点问题:
1.关于对话框给控件分配一个默认焦点
是根据rc文件中的位置进行分配,如果控件中有bs_defpushdown风格按钮,未必会给其分配为默认焦点
情况较为复杂,动态创建控件,没有尝试。
还有:普通窗口创建控件,不会分配默认焦点。
2.文本框在对话框上默认就会响应bn_setfocus, bn_killfocus等消息码。而按钮则不会,需要你设置风格:bs_notify. 设置后也有所差异,后者需要点击才会产生,不像文本框。
文本框在普通窗口中也是不会默认响应的,呵呵。
bn_setfoucs, bn_killfocus意义不大, 做一些特效处理,如“改变文字背景”,可以考虑鼠标进入,鼠标离开消息。
bs_notify这个消息意义不大,更以nm_customdraw无关, 如果用以nm_customdraw消息码进行绘制,那么不要去处理bs_ownder ,wm_paint.
3. 对话框给控件分配了默认焦点后,是否该控件收到焦点后,就会响应xs_setfocus, xs_killfocus?
未必。比如按钮,其需要设置bs_notify风格。如果是编辑框,则不需要。
普通窗口则不会设置默认焦点,而且普通窗口上的控件的ws_tapstop是无用的。
------解决方案--------------------
用IsDialogMessage处理一下就可以了
while (GetMessage(&msg, NULL, 0, 0))
{
if (!IsDialogMessage(hwnd, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}