將這個非模式對話框作為主對話框的子窗口。 ?
? 比如: ?
? ?
? BOOL ? CDlg1::OnInitDialog() ?
? { ?
? CDialog::OnInitDialog(); ?
? CDlg2 ? *pDlg2 ? = ? new ? CDlg2 ? ; ?
? pDlg2->Create(IDD_...,this); ?
? pDlg2->ShowWindow(SW_SHOW); ?
? pDlg2->MoveWindow(...); ?
? return ? TRUE; ?
? } ?
? ?
? dlg2屬性設為: ?
? style ? ? child ?
? 取消 ? Title ? Bar ?
? Border ? none?
/////////////////////////////////////////////////////////////
一個對話框資源,在資源編輯器里面設計時樣式:
child
無邊框
無系統(tǒng)菜單
無標題
這主要是為了作為子窗口嵌入TAB頁用
現(xiàn)在,我又想單獨使用它,讓他能像普通對話框那樣彈出,又有標題欄之類的
我用m_nMode來區(qū)分使用的模式,在OnInitDialog()中加入了一下代碼:
if(0 != m_nMode)
{
//非子窗口模式
DWORD dwStyle;
dwStyle=GetStyle();
ModifyStyle(dwStyle,WS_DLGFRAME|WS_POPUP|WS_VISIBLE|WS_BORDER,SWP_SHOWWINDOW);
}
結果運行后,找不到彈出的對話框了,調(diào)用者窗口也無法操作了。
怎么解決??
后來我改用下面的代碼,能用是能用了,但是問題N多:
if(0 != m_nMode)
{
RECT rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
//單獨使用模式
DWORD dwStyle;
dwStyle=GetStyle();
ModifyStyle(dwStyle,
WS_DLGFRAME|WS_POPUP|WS_VISIBLE|WS_BORDER,
SWP_SHOWWINDOW|SWP_FRAMECHANGED);
SetParent(GetDesktopWindow());
rect.right+=30;
rect.bottom+=40;
ClientToScreen(&rect);
MoveWindow(&rect);
EnableWindow();
ShowWindow(SW_SHOW);
//SetWindowPos(&CWnd::wndTopMost,0,0,rect.right-rect.left+50,
//rect.bottom-rect.top+60,SWP_NOMOVE);
//Invalidate();
}