如何在MFC类中声明一个.Net FrameWork变量

2024年11月16日 09:41
有1个网友回答
网友(1):

你说的这种方式要建立在CaDlg正在使用中才可以,
CaDlg *m_pMainDlg;

这是声明一个CaDlg类的指针,你声明之后没有给这个指针初始化,所以就出现你的问题了。
你可以再CbDlg的构造函数中加
CbDlg(CaDlg * pCaDlg);
然后m_pMainDlg = pCaDlg;
不过还有一种更好的对话框甚至窗口之间传数据的方式,那就是sendmessage
AfxGetMainWnd()->SendMessage(WM_CLOSE_NO_MESSAGEBOX);
WM_CLOSE_NO_MESSAGEBOX是你自己定义的message

ON_MESSAGE(WM_CLOSE_NO_MESSAGEBOX, SetShow)
这个是在接受窗口的messagemap里面的消息响应函数即SetShow

你可以搜索下sendmessage传数据的方法,这个是很重要而且很有用的方式。甚至可以从非窗体类传数据给窗体类。但是接收方必须是窗体类。

还有一种最简单的方法,但是也是最不安全的,也是限制比较多。那就是static了
在CaDlg的public里面定义static a1;
return CaDlg ::a1; 这样儿在CbDlg中就可以直接调用了。