www.pudn.com > WinGOS.rar > Dialog.cpp


#include "gos.h" 
#include "dialog.h" 
 
LRESULT CDialog::MsgProc(UINT message, WPARAM wParam, LPARAM lParam) 
{ 
	switch(message) 
	{ 
	case WM_DRAWITEM: 
		break; 
	case WM_DESTROY: 
		OnDestroy(); 
		break; 
	case WM_CLOSE: 
		OnClose(); 
		break; 
	case WM_CREATEDIALOG: 
		OnCreateDialog(); 
		break; 
	case WM_CREATE: 
		OnCreate(); 
		break; 
	default: 
		wParam=CPWnd::MsgProc(message,wParam,lParam); 
	} 
	return wParam; 
} 
 
void CDialog::OnCreateDialog() 
{ 
	CRect r; 
	g_pDesktop->GetDlgMaxmizeRect(r); 
	CPWnd::Create(GetStyle()|WS_MAXIMIZE,r,g_pDesktop); 
	Invalidate(r); 
} 
 
void CDialog::OnCreate() 
{ 
	GetParent()->SetActiveControl(this,PW_FOCUSCHAIN); 
} 
 
void CDialog::OnDestroy() 
{ 
	PPWND pParent=GetParent(); 
	pParent->Invalidate(GetWindowRect()); 
	CPWnd::OnDestroy(); 
	pParent->RemoveControl(this); 
} 
 
int CDialog::DoModal() 
{ 
	AddStyle(WS_MODALDLG); 
	MsgProc(WM_CREATEDIALOG,0,0); 
	PostMessage(WM_INITDIALOG,0,0); 
 
	CThread* pThread=GetMQThread(); 
	MSG msg; 
	while(pThread->GetMessage(&msg,INFINITE) && 
		!(msg.message==msgQuit && msg.pObj==this)) 
	{ 
		pThread->DispatchMessage(&msg); 
	} 
	DestroyWindow(); 
	RemoveStyle(WS_MODALDLG); 
	return msg.wParam; 
}