sha*_*oth 1 windows user-interface winapi
我有一个Win32 GUI应用程序,它有几个编辑控件(普通的旧"EDIT"类名).
逻辑是用户要填充应用程序选择的编辑框.为了更清楚地说明要填写哪一个,我想以某种方式突出显示"当前"编辑框.然后,当用户完成输入并要求应用程序继续时,编辑框必须再次变为"通常".
理想的方法是用选择的颜色绘制背景.我怎么能实现这个或类似的选择 - 也许我可以替换用于临时绘制控件的画笔?如果使用编辑控件无法在Windows中启用哪些替换控件,那么从Win2k开始?
您可以在父窗口中处理编辑控件的WM_CTLCOLOREDIT 通知.在即将绘制编辑控件时发送通知.因此,一般情况下,您会使用RedrawWindow或某些东西来强制重绘,然后处理不可避免的控件颜色通知.在此,您可以为通知传入的设备上下文设置前后颜色:
LRESULT OnControlColorEdit(HWND hwnd, DWORD msg, WPARAM wParam, LPARAM lParam)
{
if( !toHighlight ) {
return DefWindowProc( hwnd, msg, wParam, lParam );
}
HDC dc = reinterpret_cast<HDC>(wParam);
::SetBkColor(dc, whatever);
::SetTextColor(dc, whatever);
HBRUSH brush = // create a solid brush of necessary color - should cache it and destroy when no longer needed
return reinterpret_cast<LRESULT>( brush );
}
Run Code Online (Sandbox Code Playgroud)