一、独立式
在上面的三屏显示器中,每个画面负责自己的操作,相互之间没有影响。我们可以创建一个主窗口,三个子窗口,每个子窗口有自己的视图和文档。我们创建的视图窗口,不会超出父窗口边界。
m_pMainWnd:即最后面蓝色的大框。
int n = GetSystemMetrics(SM_CMONITORS);
int cx = GetSystemMetrics(SM_CXSCREEN) * n;
int cy = GetSystemMetrics(SM_CYSCREEN);
// The main window has been initialized, so show and update it.
m_pMainWnd->SetWindowPos(NULL, 0, 0, cx cy, SWP_NOZORDER | SWP_SHOWWINDOW);
m_pMainWnd->UpdateWindow();
二、跨屏式
/
// CChildFrame message handlers
int CChildFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
SetWindowPos(NULL,0, 0, cx * 2, cy, SWP_NOZORDER);
return 0;
}
三、特殊式
这种情况比较特殊,需要特殊处理。可以创建一个非模式窗口(modeless),把它扩充到两屏区域即可。组态的内容要把它加载到该非模式窗口中。在控制画面切换时,视图之间消息机制考虑他们的通用性,不可有了特殊性而影响其他功能性等问题。
总之,我们在开发多屏显示器的组态软件时,要充分考虑各种特殊的情况,这样在以后组态过程遇到相似的问题,将会轻松地迎刃而解。