15,980
社区成员




BOOL CMainFrame::ChangeDlgStyle(int resInt)
{
HINSTANCE hInst=AfxFindResourceHandle(MAKEINTRESOURCE(resInt),RT_DIALOG);
HRSRC hRes=::FindResource(hInst,MAKEINTRESOURCE(resInt),RT_DIALOG);
DWORD sz = ::SizeofResource(hInst, hRes);// 284
HGLOBAL hTemplate=::LoadResource(hInst,hRes);
DLGTEMPLATEEX *pTemplate=(DLGTEMPLATEEX *)LockResource(hTemplate);
HWND hDlg=0;
BYTE *pByte=new BYTE[sz];
//
if(pTemplate->signature==0xFFFF)
{//ex
DLGTEMPLATEEX *pNewTmp=(DLGTEMPLATEEX *)lpdwAlign((LPDWORD)pByte);
CopyMemory(pNewTmp,pTemplate,sz);
pNewTmp->style &= ~WS_CAPTION;
pNewTmp->style &= ~DS_MODALFRAME;
pNewTmp->style &= ~WS_POPUP;
pNewTmp->style &= ~WS_VISIBLE;
pNewTmp->style |= WS_BORDER;
pNewTmp->style |= WS_CHILD;
hDlg= CreateDialogIndirect(hInst, // handle to application instance
(const DLGTEMPLATE *)pNewTmp, // pointer to dialog box template
this->m_hWnd, // handle to owner window
0); // pointer to dialog box procedure
}
else
{//
DLGTEMPLATE *pNewTmp=(DLGTEMPLATE *)lpdwAlign((LPDWORD)pByte);
CopyMemory(pNewTmp,pTemplate,sz);
pNewTmp->style &= ~WS_CAPTION;
pNewTmp->style &= ~DS_MODALFRAME;
pNewTmp->style &= ~WS_POPUP;
pNewTmp->style &= ~WS_VISIBLE;
pNewTmp->style |= WS_BORDER;
pNewTmp->style |= WS_CHILD;
hDlg= CreateDialogIndirect(hInst, // handle to application instance
(const DLGTEMPLATE *)pNewTmp, // pointer to dialog box template
this->m_hWnd, // handle to owner window
0); // pointer to dialog box procedure
}
UnlockResource(hTemplate);
FreeResource(hTemplate);
delete [] pByte;
//
if(hDlg)
{
m_Dlg.SubclassWindow(hDlg);
CRect rc;
GetClientRect(&rc);
CRect tbRc;
m_wndToolBar.GetToolBarCtrl().GetWindowRect(&tbRc);// h=26
CRect sbRc;
m_wndStatusBar.GetStatusBarCtrl().GetWindowRect(&sbRc);// h=25
// view border 2
m_Dlg.MoveWindow(0,tbRc.Height()-1,rc.Width(),rc.Height()-tbRc.Height()-sbRc.Height()+1,FALSE);
m_Dlg.ShowWindow(SW_SHOW);
return TRUE;
}
return FALSE;
}