在对话框消息过程中获取应用程序对象指针

发布于 2024-12-07 19:16:04 字数 294 浏览 0 评论 0原文

我们可以使用 this 作为 CreateWindow 的最后一个参数,并在 WndProc 中获取指向应用程序对象的指针,如下所示:

if(message == WM_CREATE)
{
    CREATESTRUCT* cs = (CREATESTRUCT*)lParam;
    pApp = (DemoApp*)cs->lpCreateParams;
    return 0;
}

在 Dialog Message Proc 中访问此指针的最佳方式是什么?解决方案是制作一个全局指针吗?

We can use this as the last argument to CreateWindow and get a pointer to the app object in the WndProc like this:

if(message == WM_CREATE)
{
    CREATESTRUCT* cs = (CREATESTRUCT*)lParam;
    pApp = (DemoApp*)cs->lpCreateParams;
    return 0;
}

What is the best way to access this pointer in a Dialog Message Proc? Is the solution to make a global pointer?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(1

刘备忘录 2024-12-14 19:16:04

您可以使用 WM_INITDIALOG 获取其他初始化数据,请参阅WM_INITDIALOG 消息

l参数

附加初始化数据。该数据被传递到系统
作为调用 CreateDialogIndirectParam 中的 lParam 参数,
CreateDialogParamDialogBoxIndirectParamDialogBoxParam 函数
用于创建对话框。对于属性表,该参数是
指向用于创建页面的 PROPSHEETPAGE 结构的指针。这
如果使用任何其他对话框创建函数,则参数为零。

也就是说,您可以使用 CreateDialogParamlParam 作为参数传递,对话框过程将通过 WM_INITDIALOG 消息接收它。

You get additional initialization data with WM_INITDIALOG, see WM_INITDIALOG message :

lParam

Additional initialization data. This data is passed to the system
as the lParam parameter in a call to the CreateDialogIndirectParam,
CreateDialogParam, DialogBoxIndirectParam, or DialogBoxParam function
used to create the dialog box. For property sheets, this parameter is
a pointer to the PROPSHEETPAGE structure used to create the page. This
parameter is zero if any other dialog box creation function is used.

That is, you can pass lParam as an argument with CreateDialogParam and the dialog proc will receive it with WM_INITDIALOG message.

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