目标实现在一个单文档视图View里创建一个tabcontrol,然后在动态库中实现各种自定义界面,在view里调用动态库接口,并传递主程序窗口指针,
在动态库中如何使用主程序传递的窗口句柄来为其创建一个子对话框呢? 现在使用这个指针能够给主程序传递消息,但在cdialog::create(IDD_X,parentWindow)这一步崩溃
动态库利用主程序传递的窗口句柄创建子对话框
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注引用 皆我百晓生 小程序回复内容作答:
在动态库中使用主程序传递的窗口句柄创建子对话框,您可以按照以下步骤进行操作:在主程序中,调用动态库接口时,将主程序窗口的句柄作为参数传递给动态库的函数。
在动态库中的函数内部,保存主程序传递的窗口句柄。
在动态库的函数内部,使用保存的窗口句柄创建子对话框。可以通过调用CDialog::Create()函数来实现。
下面是一种可能的实现方式:
// 在动态库的头文件中定义一个指向主窗口的指针变量 CWnd* g_pParentWnd; // 在动态库的函数中保存主窗口的句柄 void SetParentWindow(CWnd* pParentWnd) { g_pParentWnd = pParentWnd; } // 在动态库的函数中使用主程序传递的窗口句柄创建子对话框 void CreateChildDialog() { CDialog dlg; dlg.Create(IDD_X, g_pParentWnd); // 其他对话框相关操作... }在主程序中调用动态库函数并传递窗口句柄:
// 在主程序中调用动态库函数,并传递窗口句柄 CWnd* pMainWnd = AfxGetMainWnd(); SetParentWindow(pMainWnd); CreateChildDialog();请注意,确保主程序的窗口句柄在动态库中有效。如果在调用
cdialog::create(IDD_X, parentWindow)时出现崩溃,可能是因为窗口句柄无效或者资源ID为IDD_X的对话框资源不存在。解决 无用评论 打赏 举报