我目前正在尝试为某些软件制作 GUI,但我遇到了一些静态控件的问题。在我的 Windows 程序中,我有 WM_CTLCOLORSTATIC 消息用于绘制静态控件的时间。在消息中,我有一个 IF ELSE 语句,它将窗口的句柄与需要绘制的句柄进行比较,并相应地执行窗口功能。一种是静态文本控件,在绘制时设置了背景颜色,而另一种是绘制静态控件的边框。
case WM_CTLCOLORSTATIC:
{
if (hwnd = ANNwindow->settingsborder)
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)ANNwindow->backgroundbrush;
}
else if (hwnd = ANNwindow->settingstext)
{
DrawEdge((HDC)wParam, &ANNwindow->rect, EDGE_ETCHED, BF_BOTTOMRIGHT);
return (LRESULT)ANNwindow->backgroundbrush;
}
}
settingsborder 和 settingstext 是我班级中用于创建 GUI 的窗口句柄。
如果我颠倒 if else 语句的顺序,它只会执行第一个,无论顺序如何。如果更改背景颜色是在 IF 下,它会这样做。如果在 IF 下绘制边框,那么它会这样做,但不会在 else 部分下。这是使用 C++ 语言时的一个简单错误,因为我找不到问题。请帮忙,谢谢。
PS对于drawedge部分,我先创建一个静态控件边框,然后在上面使用drawedge,我应该用不同的方式吗?谢谢。