MFC遇到难题了,大家帮怎么通过button 事件调用跨工程的Dialog

来源:百度知道 编辑:UC知道 时间:2024/06/08 01:02:35
是两个分开的工程,现在的情况是另一个工程里的Button事件要响应到另一个工程的Dialog。说白了就是点击一个resource文件里窗体上的按钮,弹出另一个resource文件里的窗体,两个窗体之间没有任何的数据传输,也不相互调用函数。

void CCalcuPORDlg::OnButton1()
{
// TODO: Add your control notificationhandler code here

} 就在这个button事件中怎么实现名字为IDD_DLG_METHOD的窗体调用

请各位说详细一点,做好能给出完整代码,新手不太理解,谢谢

你的意思是两个对话框资源在两个工程里面,一个工程已经建好了并运行了,它弹出一个对话框,对话框上有一个按钮,点击这个按钮时你想他弹出另一个工程里面设置的对话框,是这个意思吧。
一个exe文件是经过编译连接生成的,所以如果你想在exe文件里面调用另一个资源文件生成一个对话框,那是不可能的。所以你必须从另一个工程里面把资源文件复制到第一个工程里面,然后重新编译连接生成exe文件。复制过来的你可能不会正确,最好你在第一个工程里面插入对话框资源,然后按照第二个工程里面对话框模样设计好,最后在OnButton1() 里面调用;
CDialog dlg;dlg.Create(IDD_DLG_METHOD,NULL);dlg.DoModal();
但是IDD_DLG_METHOD必须在本工程当中,别想着去调用别的地方的资源

是两个不同的进程么??
就是说,要弹出的对话框和OnButton1属于一个进程么??

如果是跨进程的,就比较麻烦,但是还是有很多解决办法的。
1、使用CreateProcess 创建新进程,该新进程创建目标对话框。
2、建立与目标进程的通信,由目标进程创建对话框。

和resource文件没什么关系吧,关键是能不能在CalcuPORDlg中使用另一个对话框类,你试试在CalcuPORDlg的实现文件中include另一个对话框类的头文件,当然,要注意那个头文件的路径正确,然后定义一个该对话框类的变量看看。

1 定义一个消息代码 #define WM_BUTN WM_USER+1999
2 在窗口头文件中添加 afk_msg void OnButn(WPARAM wParam,LPARAM lParam)
3 在窗口的CPP文件中添加
BEGIN_MESSAGE_MAP()
......
ON_MESSAGE(WM_BUTN,OnButn)
END_MESSAGE_MAP()
void 类名::OnButn(WPARAM wParam,LPARAM lParam)
4 ::PostMessage(另一个对话框的HWND,WM_ONBUTN,0,0