我不知道是不是最短的代码,但肯定可以实现:
在视图OnInitialUpdate()里::PostMessage ( WM_SIZE,...);
重载OnSize ()
void CxxxView::OnSize(UINT nType, int cx, int cy)
{
if ( m_bShow )
{
m_bShow = FALSE;
ShowWindow(SW_HIDE);
}
else
ShowWindow ( SW_SHOW );
...
}程序执行完后再PostMessage ( WM_SIZE , 0 , 0 );就可以了,你可以让其结束(WM_CLOSE,WM_QUIT 消息);当然,你完全可以自定义其他的消息,作同样的处理.如果是对话框程序,也大致相同.
在视图OnInitialUpdate()里::PostMessage ( WM_SIZE,...);
重载OnSize ()
void CxxxView::OnSize(UINT nType, int cx, int cy)
{
if ( m_bShow )
{
m_bShow = FALSE;
ShowWindow(SW_HIDE);
}
else
ShowWindow ( SW_SHOW );
...
}程序执行完后再PostMessage ( WM_SIZE , 0 , 0 );就可以了,你可以让其结束(WM_CLOSE,WM_QUIT 消息);当然,你完全可以自定义其他的消息,作同样的处理.如果是对话框程序,也大致相同.
将domal的方法改成create(ID)及SHOWWINDOW(SW_HIDE)的方法--即派生一指针实例
WinExec(欲执行的文件名,flags)
在APP的RUN的消息中whil(INVALIDATE_HANDLE == FINDWINDOW("类名","执行和序的标题"))
ExitInitstance() ;
我临时写的可能有些地方不太准确,但大致是这样!
PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof si);
si.cb = sizeof si;
if ( ! CreateProcess(NULL, "要执行的程序", NULL, NULL, FALSE,
0, NULL, NULL, &si, &pi) )
{
return FALSE;
}
if( 0 != WaitForInputIdle(pi.hProcess, 5000) )
return FALSE;
return TRUE;