WM_CTLCOLORSTATIC lParam,C++ WINAPI

1 c++ winapi getwindowlong resource-id

我正在尝试包含到我的对话窗口过程中,当收到msg WM_CTLCOLORSTATIC时,我得到正在发送消息的Control的ID.

case WM_CTLCOLORSTATIC: 
        UINT ID = GetWindowLong((HWND)lParam, GWL_ID);
Run Code Online (Sandbox Code Playgroud)

问题是......当我尝试输入WM_CTLCOLORSTATIC的lParam时,它返回值65535,这是不正确的; 我甚至没有最大UINT ID为65535的资源项.

你能告诉我为什么会这样吗?

man*_*ell 5

你的问题不是很清楚,但我猜你有一个65535的ID,它是-1,这是静态控件ID的标准.

如果您希望能够区分静态控件,请为它们指定不同的ID.

如果您不关心其他静态控件的颜色,只需使用:

if ( ID ==  IDC_RECT_CC_00 ) {
    [...]
} else {
    // don't bother
}
Run Code Online (Sandbox Code Playgroud)

  • 正确.即使有一个常数:`IDC_STATIC`. (2认同)