win32 SDK子窗口绘制(C/C++)
我正在使用 win32 Platform SDK(在 XP Pro 上)创建一个由单个主窗口和多个子窗口组成的应用程序。
传递给 CreateWindow 的样式是 WS_OVERLAPPEDWINDOW | WS_VISIBLE(对于主窗口)和WS_CHILDWINDOW | WS_VISIBLE 为孩子们。
我看到的错误是,当另一个应用程序被拖动到我的应用程序顶部时,底层窗口不会重新绘制。 强制更新的一种简单(但笨拙)的方法是“抖动”标题栏。
我猜我错过了 Windows 消息或没有正确调用 win32 函数。 我的大部分代码直接来自 Petzold 的 95 本书。
如果重要的话,主窗口不需要绘制任何东西:子窗口处理所有显示职责。
I'm using the win32 Platform SDK (on XP Pro) to create an app consisting a single main window with a number of child windows.
The styles passed to CreateWindow are WS_OVERLAPPEDWINDOW | WS_VISIBLE
(for the main window) and WS_CHILDWINDOW | WS_VISIBLE
for the children.
The error I'm seeing is that when another application is dragged on top of my app, the underlying windows are not redrawn. An easy (but kludgy) way to force an update is to 'jiggle' the titlebar.
I'm guessing that I'm missing a windows message or not calling a win32 function correctly. Most of my code is straight from Petzold's 95 book.
If it matters, the main window doesn't need to draw anything: the child windows handle all display duties.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
听起来您没有为 WM_PAINT 消息调用 DefWindowProc。
您确定正在处理 WM_PAINT 事件适当地?
特别要确保对于您正在调用的此 WM_PAINT 消息:
当您的窗口需要重新绘制时,将调用 WM_PAINT。
如果您尝试处理自己的窗口绘制,请确保在处理程序中调用 BeginPaint 和 EndPaint。
It sounds like you are not calling DefWindowProc for the WM_PAINT message.
Are you sure you are handling the WM_PAINT event properly?
In particular make sure that for this WM_PAINT message that you are calling:
WM_PAINT will be called when your window needs to be repainted.
If you are trying to handle your own drawing of the window, make sure you are calling BeginPaint and EndPaint in your handler.