【发布时间】:2021-07-10 06:55:07
【问题描述】:
我想在按钮上画一个简单的正方形。
我在其中创建了一个常规窗口和一个常规按钮。现在,在我的窗口的窗口过程中,在WM_PAINT 消息中,我得到了我的按钮的HDC 并绘制了一个正方形:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_PAINT)
{
PAINTSTRUCT ps;
HDC my_hdc = BeginPaint(hWnd, &ps);
//---------------------------------------------
HDC my_button_HDC = GetDC(GetDlgItem(hWnd, 11)); //Get HDC my button
Rectangle(my_button_HDC, 5, 5, 30, 30);
//---------------------------------------------
EndPaint(hWnd, &ps);
}
WinMain()
{
//standart code create window and button...
}
创建窗口时,按钮上不会出现正方形。仅当我将窗口向下移到屏幕外并将其抬起时才会出现。
但是,只要我调整窗口大小或单击按钮,方块就会再次消失。
我不明白为什么会这样。
【问题讨论】:
-
IInspectable,遗憾的是不明白它是如何解决问题的,问题是什么。
-
问题是按钮会自己绘制并抹掉您绘制的内容。要更改控件的外观,您需要对其进行子类化,以便拦截绘画消息并修改其行为。
-
Jonathan Potter,谢谢,请告诉我,我在哪里可以看到一个例子,需要截取什么消息以及如何重新配置?