c++ - Windows Procedure If Else 语句不适用于消息

标签 c++ windows winapi api procedure

我目前正在尝试为某些软件制作 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++ 语言的简单错误吗,因为我找不到问题所在。请帮忙,谢谢。

附言对于 drawedge 部分,我首先创建一个静态控制边框,然后在其上使用 drawedge,我应该以不同的方式进行吗?谢谢。

最佳答案

  1. 在编译器中打开警告。
  2. 请注意,在这两种情况下,您都使用赋值 (=) 而不是比较 (==)。

关于c++ - Windows Procedure If Else 语句不适用于消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4535824/

相关文章:

windows - Booksleeve 是否可以与 Windows Redis(Redis 作为 Windows 服务安装)一起使用?

winapi - 为什么 GetWindowLong 有 ANSI 和 Unicode 变体?

c++ - 无法初始化 GLEW。缺少 GL 版本

c++ - 将(指向可变大小数组的指针)转换为(指向指针的指针)

c++ - boost::variant 和 STL 容器 - 我做错了吗?

windows - 如何在 Windows 上使用类 Linux Shell (bash) 进行开发?

C++ virtual Diamond 继承

python - 如何使用 Python 从 Windows 操作系统中的窗口标题获取 PID?

c++ - 2 组独立的单选按钮,采用相同的 WINAPI 形式(无 MFC)

c++ - 仅适用于 .NET 的 Windows API W7 JumpList?