我正在尝试在Windows对话框中使一些静态控件透明,但是我在使用一条Windows消息时遇到了困难。
Windows在绘制静态控件时很乐意向我发送WM_CTLCOLORSTATIC消息,但此消息也会发送到只读和禁用的编辑控件。那么 - 只要对控件进行一次调整,我该如何判断它是什么样的控制?
答案 0 :(得分:3)
您可以致电GetClassName,即
// given controlHwnd passed to me
TCHAR controlClassName[128];
GetClassName(controlHwnd,controlClassName,128);
然后你必须根据字符串进行一堆字符串比较,即“按钮” - 所以不是很好,但是应该可以工作。
答案 1 :(得分:1)
如果您没有很多控件,请使用GetDlgCtrlID()获取控件的资源ID 有了这些信息,您可以过滤掉您不想要的任何控件。
答案 2 :(得分:1)
使用GetClassName功能。某些预定义的类名称(BUTTON
)列在here中。另请参阅How To Get a Window's Class Name and Other Window Attributes。
它是'类名',它决定了它的“控制”类型(更具体地说,类定义了窗口过程,它定义了控件的行为......或者如果控件已被子类化,则仅稍微复杂一些)某人)。
答案 3 :(得分:1)
作为优化,您可以首先尝试使用Static
和字符串比较找到您的第一个GetClassName
控件,然后,一旦找到,使用GetClassLong(hWnd, GCW_ATOM)
存储其类原子并比较从现在开始的原子。