c++ - DrawStatusText 在第一次调用时不绘制文本,仅在后续调用时绘制
问题描述
我有一个在消息期间使用该DrawStatusTextW()
功能的程序。WM_PAINT
当它被调用时,不会绘制任何文本。但是,在随后的调用中,例如在任务栏下移动窗口然后将其拉回,将绘制文本。
我尝试在函数中使用不同的标志,并尝试将其放在WM_CREATE
message.xml 中。没有影响。
RECT status_rect;
HDC status_dc;
SNDMSG(controls.status_bar, SB_GETRECT, 0, reinterpret_cast<LPARAM>(&status_rect));
status_dc = GetDC(controls.status_bar);
SelectObject(status_dc, status_font);
DrawStatusText(status_dc, &status_rect, L"Ready.", SBT_NOBORDERS);
ReleaseDC(controls.status_bar, status_dc);
它应该在第一次调用时绘制状态文本。我不应该在窗口周围移动,以便它重新绘制自己。
解决方案
每个人都HWND
处理自己的绘画。如果您在绘制父窗口时在状态栏上绘制,则状态栏自己的绘制处理将清除您绘制的内容。
如果要自定义绘制状态栏,请将状态栏设为所有者绘制WM_DRAWITEM
并在其父窗口中处理消息。
推荐阅读
- postgresql - Postgres connection issue EF Core / docker-compose up
- python - Dronekit-python running in docker connecting to MAVProxy on host
- python - str.contains specific pattern in pandas
- java - Spring RequestContextHolder and WebTestClient
- git - How to insert git commit date into a file being committed?
- python - 我想打印列表中的最后 10 个值
- python - 使用 Kivy,在按下按钮时动态添加项目
- react-native - 解析 json 在本机平面列表中做出反应
- discord.js - 错误:TypeError:message.guild.channels.find 不是函数
- c++ - 如何从此代码中获取递归调用的数量?