关于建立工程的有关问题
关于建立工程的问题
小弟新手,最近需要写一软件,有A和B两个模式,每个模式有单独的页面进行操作.
初步设想是这样的:建立基于对话框的工程,在对话框上添加两个按钮,两个对话框,单击按钮能弹出对话框(需要菜单栏,工具栏等进行操作),可这样的话需要为添加的对话框添加菜单栏,工具栏等等,比较麻烦;听别人说可以建立基于FOrmView的单文档工程,这样同样需要插入两个对话框,各位大神们能不能给点意见,建立什么工程以及之后如何操作?在这谢谢各位,回答好的还可以加分,谢谢各位了这问题已经困扰我好几天了
------解决方案--------------------
用单文档做,拆分视图,然后用doc类来控制各个view之间数据的传送
------解决方案--------------------
笨办法是建立独立的两个带工具栏等的 exe 程序,由主程序根据按钮分别调用,可以在调用时暂时隐藏主程序窗口,子程序运行完毕之后再显示,这样就不用费心再去考虑其他的了。
窗口显示隐藏可以使用 ShowWindow 方法
启动一个程序并等待其运行结束可以使用如下函数
调用方法类似下面的,当然实际使用时不能使用绝对地址:
初步设想是这样的:建立基于对话框的工程,在对话框上添加两个按钮,两个对话框,单击按钮能弹出对话框(需要菜单栏,工具栏等进行操作),可这样的话需要为添加的对话框添加菜单栏,工具栏等等,比较麻烦;听别人说可以建立基于FOrmView的单文档工程,这样同样需要插入两个对话框,各位大神们能不能给点意见,建立什么工程以及之后如何操作?在这谢谢各位,回答好的还可以加分,谢谢各位了这问题已经困扰我好几天了
------解决方案--------------------
用单文档做,拆分视图,然后用doc类来控制各个view之间数据的传送
------解决方案--------------------
笨办法是建立独立的两个带工具栏等的 exe 程序,由主程序根据按钮分别调用,可以在调用时暂时隐藏主程序窗口,子程序运行完毕之后再显示,这样就不用费心再去考虑其他的了。
窗口显示隐藏可以使用 ShowWindow 方法
启动一个程序并等待其运行结束可以使用如下函数
bool _ShellExecuteWait(CString pFileNameWithPara,CString pPath)
{
//不显示窗口的办法
//设置STARTUPINFO结构的wShowWindow成员为SW_HIDE
//如果是命令行程序的话设置dwCreationFlags参数为CREATE_NO_WINDOW
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.wShowWindow=SW_HIDE;
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
(LPWSTR)(LPCTSTR)pFileNameWithPara,//(LPSTR)(LPCTSTR)m_rtf, // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
CREATE_NO_WINDOW, // No creation flags.
NULL, // Use parent's environment block.
(LPWSTR)(LPCTSTR)pPath, // Use parent's starting directory. 注意这里是UNICODE的,如果是MBCS的去掉W即可
&si, // Pointer to STARTUPINFO structure.
&pi ) // Pointer to PROCESS_INFORMATION structure.
)
{
_MSGBOX(_T("不能启动")+pFileNameWithPara);
return false;
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
return true;
}
调用方法类似下面的,当然实际使用时不能使用绝对地址:
_ShellExecuteWait("d:\\a.exe","d:\\");