win32 SDK子窗口绘制(C/C++)

发布于 2024-07-11 06:40:52 字数 390 浏览 8 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你是我的挚爱i 2024-07-18 06:40:52

听起来您没有为 WM_PAINT 消息调用 DefWindowProc。

您确定正在处理 WM_PAINT 事件适当地?
特别要确保对于您正在调用的此 WM_PAINT 消息:

DefWindowProc(hwnd,msg,wParam,lParam);

当您的窗口需要重新绘制时,将调用 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:

DefWindowProc(hwnd,msg,wParam,lParam);

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文