首先从对话框的按钮处理函数中获得mainframe指针
cmainframe pmain=(cmaimframe )afxgetapp()->m_pmainwnd;
然后获得相应视图指针cyourview pview=(cyourview )pmain->getactiveview();
最后获得视图对应的当前文档指针 cdocument pcurrentdoc =(cframewnd )m_pmainwnd->getactivedocument();
使用ShellExecute()函数。如:
ShellExecute(NULL,NULL,
"C:\\WINDOWS\\system32\\cmdexe"/这个参数是执行的程序的路径和名称/,NULL/这里是命令行参数/,
NULL,
SW_HIDE/该参数确定显不显示DOS窗口/
);
具体用法见msdn
Win32程序是从WinMain开始执行的,但是MFC把WinMain给封装了,不会出现在你的代码里面,他已经编译到mfc80dll了(VS2005)了。
在MFC中的执行顺序是这样的,首先Windows调用WinMain函数,WinMain里面调用AfxWinMain函数,注意你的代码现在来了,AfxWinMain函数调用对应你程序的APP类(这个类是基于CWinApp的,CWinApp又是基于CWinThread的)的InitInstance函数,如果InitInstance返回TRUE,就调用CWinThread的Run函数,这个函数你可以重载,但是一般不重载。在Run函数里面是Windows的消息循环,就是Win API编程里面的那个while循环以及TranslateMessage和DipatchMessage,当然MFC弄得比较复杂,有一个PumpMessage的机制。
当程序收到WM_QUIT消息之后,Run函数返回,紧接着CWinThread::ExitInstance会被调用,如果你重载了ExitInstrance则会调用你的。最后程序结束。
如果InitInstance返回FALSE,那么Run函数就不会执行,直接调用ExitInstance,然后程序结束。
你最早可以调试的地方要么是你App的构造函数,不过一般从InitInstrance开始。
这要看你的目标程序的类型是什么或是采用什么开发方式,就比如如果目标是应用程序,开发方式是Win32 SDK 方式,入口点就是 WinMain 函数,如果目标是驱动程序,入口点就是DriverEntry函数,如果你的目标是动态库(dll),开发方式是Win32 SDK 方式,入口点就是DllMain函数。
这些所谓的入口函数,随便放在哪个"cpp"里都可以,只要保证函数在工程里的唯一性就可以了,如果你采用MFC方式开发应用程序或动态库,那么基本上不用去关心什么入口,因为很多东西可以在类初始化时去做,只要你找到类的初始化过程就可以了,至于动态库,完全可以忽略这个入口,直接写你静态函数就可以了。
应该这样实现:
MFC 基本对话框的话,在主程序入口InitInstance中,
CListDemoDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlgDoModal();//创建模态对话框,这里就开始显示了。
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// 在这里,对你的第二个对话框进行DoModal()
}
当然,这是最简单的办法,其实多对话框窗口(类似安装程序那样的),最好通过隐式属性页实现(VS自带的安装程序就是这样做的)
以上就是关于急!!求懂MFC的大佬帮我解答。MFC单文档工具栏打开文件的路径是怎么获取的,求解。尽量详细点全部的内容,包括:急!!求懂MFC的大佬帮我解答。MFC单文档工具栏打开文件的路径是怎么获取的,求解。尽量详细点、MFC:怎么在显示窗口之前显示一个类似DOS的命令窗口、VC中MFC从哪里开始运行,MFC怎么调试,很急呀等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)