一台机器上同时运行3个程序(A,B,C),初始时都为最小化,现在要求A运行完某个操作,B最大化,A,C窗口最小化,当B运行完某个操作后,C最大化,A,B最小化,依次循环,如何通过解决。
有人是通过向注册表发消息的方式实现,注册表内容如下:
HKEY_LOCAL_MACHINE->SOFTWARE->SYSTEM_HANDLE
A_HANDLE 0x00000768(1896)
B_HANDLE Ox00000zB0(688)
C_handle Ox00000634(1588)
请高手指点在VC++中如何实现?十分感谢!
有人是通过向注册表发消息的方式实现,注册表内容如下:
HKEY_LOCAL_MACHINE->SOFTWARE->SYSTEM_HANDLE
A_HANDLE 0x00000768(1896)
B_HANDLE Ox00000zB0(688)
C_handle Ox00000634(1588)
请高手指点在VC++中如何实现?十分感谢!
1.控制程序启动时依次启动A、B、C(可以用winexec()),并根据需要,置一个程序在最前台,并最大化。
2.控制程序启动结束后,自身最小化,但有一个时钟函数在执行。(等待A、B、C发来的消息)。
3.在A、B、C中加入请求切换代码,需要切换时,向控制程序广播消息。
4.控制程序得到消息后,执行切换。我做过一个项目,用的就是这种方法,感觉还可以。
现在:
1。不知下面是什么意思。
HKEY_LOCAL_MACHINE->SOFTWARE->SYSTEM_HANDLE
A_HANDLE 0x00000768(1896)
B_HANDLE Ox00000zB0(688)
C_handle Ox00000634(1588)
2。我不知道如何向B发消息,和不知道如何接受C发给我的消息。
我很迷惑?望指点!!!
(1)ABC中均有广播接收,若传来的消息参数不是本程序,则最小化,否则最大化;
(2)A、B、C中每个各自操作结束后,就发广播消息,指明下一操作程序
来遇到好人&高手啦!
创建和控制其他几个进程的运行.通过降低,升高(每个进程的主线程)优先等级,来做到不同的切换
不过我没有做过,提供个思路
extern const UINT WM_MYMSG = ::RegisterWindowMessage("MY_SHOW");接收消息处理:
LRESULT CRecvPostMessagedlgDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_MYMSG)
{
AfxMessageBox("ok");
}
return CDialog::DefWindowProc(message, wParam, lParam);
}从另外一进程内进行触发:
CWnd * pPrevWnd = CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
while( pPrevWnd )
{
if( ::GetProp(pPrevWnd->GetSafeHwnd(), m_pszExeName) )
{
::PostMessage(pPrevWnd->GetSafeHwnd(),WM_MYMSG,0,0);
//::PostMessage(HWND_BROADCAST,WM_MYMSG,0,0);
return TRUE;
}
pPrevWnd = pPrevWnd->GetWindow(GW_HWNDNEXT);
}