注册 登录
编程论坛 汇编论坛

又又问题啦.........

nzxhust 发布于 2009-08-04 10:45, 867 次点击
我要实现各小功能就是当鼠标单击静态文本框时,静态文本框会变色。
有两个问题。
一是这个WM_LBUTTONDOWN消息在哪里处理啊?是不是那个WM_COMMAND的wParam高16那个通知码?
二还个问题怎么单个设置文本框背景颜色啊用哪个函数?
老大快来....
8 回复
#2
nzxhust2009-08-04 14:11
The STN_DBLCLK notification message is sent when the user double-clicks a static control that has the SS_NOTIFY style. The parent window of the control receives this notification message through the WM_COMMAND message.

找到了,说是STATIC控件用了NOTIFY属性后就可以发送消息了,
    .elseif    ax==    IDC_STATIC_1;这个是我的静态文本框
        shr    eax,16
        .if    ax==STN_DBLCLK;这个我截取的通知吗鼠标左键双击
        invoke    SetDlgItemInt,hWnd,IDC_STATIC_1,0,FALSE;
        .endif

    .endif
这个问题结果了,第一次查MSDN资料找到了真高兴啊
第二次问题老大快来啊我继续找找
#3
nzxhust2009-08-04 20:47
老大在哪...
#4
非虫2009-08-05 08:09
要改变背景颜色,请处理WM_CTLCOLOREDIT消息,返回一个画刷句柄就可以了
#5
nzxhust2009-08-05 10:22
但是那改变的是所有EDIT啊我只想改变其中一个啊(我有很多EDIT),这怎么办啊
#6
nzxhust2009-08-05 16:43
WM_CTLCOLOREDIT处理这个消息return 一个BRUSH那所有的EDIT颜色都变了吧?
我只要其中一个EDIT变色怎么办,令我要的是STATIC的静态文本变色。
#7
nzxhust2009-08-09 15:34
怎么没人回答了....
#8
东海一鱼2009-08-11 23:05
WM_CTLCOLOREDIT 消息来到时,WPARAM是GDI设备上下文,LPARAM是控件的句柄。你可以用这个句柄来判断是否是你想要改变的那个。

另外用‘子类化’方式实现控件自绘更灵活,子类化允许你接管被子类化的窗口,使你对它有绝对的控制权。

实现细节:
    当用窗口刷新时,Windows 会给Edit控件的窗口函数发送 WM_PAINT 消息。这个窗口函数本身寄生于 Windows 中,因此不能直接修改它。但是我们可以重定向这个消息使之发送到我们自己编写的窗口处理函数。如果自定义窗口要处理这个消息那就可以处理它,如果不处理就可以把这个消息转发到它原来窗口处理函数。通过这种方式,自定义的窗口处理函数就把它自己插入到 Windows 系统和 Edit 控件之间。
#9
nzxhust2009-08-12 10:50
我终于明白说得意思了,我以前一直以为WM_CTLCOLOREDIT消息是绘制所有的控件颜色原来是发一个绘制一个啊.....尴尬
1