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

Getting app object pointer in Dialog Message Proc

本文关键字:应用 对象 指针 获取 过程中 对话框 消息      更新时间:2023-10-16

我们可以使用this作为CreateWindow的最后一个参数,并像这样在WndProc中获得一个指向应用程序对象的指针:

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

在对话消息过程中访问这个指针的最佳方法是什么?是解决方案,使一个全局指针?

您可以使用WM_INITDIALOG获得额外的初始化数据,参见WM_INITDIALOG消息:

lParam

附加初始化数据。这些数据被传递给系统作为调用CreateDialogIndirectParam时的lParam参数,CreateDialogParam, DialogBoxIndirectParam, DialogBoxParam功能用于创建对话框。对于属性表,此参数为指向用于创建页面的PROPSHEETPAGE结构体的指针。这

使用其他对话框创建功能时,参数为零。

也就是说,您可以将lParam作为CreateDialogParam的参数传递,对话进程将通过WM_INITDIALOG消息接收它。