Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

dlg.cpp

Go to the documentation of this file.
00001 // 00002 // CDlg 00003 // 00004 // FelixA 00005 // 00006 // Used to be CDialog 00007 // 00008 00009 00010 #include "pch.h" 00011 #include "dlg.h" 00012 00014 // 00015 // Sets the lParam to the 'this' pointer 00016 // wraps up PSN_ messages and calls virtual functions 00017 // calls off to your overridable DlgProc 00018 // 00019 00020 BOOL CALLBACK CDlg::BaseDlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam) 00021 { 00022 CDlg * pSV = (CDlg*)GetWindowLong(hDlg,DWL_USER); 00023 00024 switch (uMessage) 00025 { 00026 case WM_INITDIALOG: 00027 { 00028 pSV=(CDlg*)lParam; 00029 pSV->SetWindow(hDlg); 00030 SetWindowLong(hDlg,DWL_USER,(LPARAM)pSV); 00031 pSV->OnInit(); 00032 } 00033 break; 00034 00035 // Override the Do Command to get a nice wrapped up feeling. 00036 case WM_COMMAND: 00037 if(pSV) 00038 return pSV->DoCommand(LOWORD(wParam),HIWORD(wParam)); 00039 break; 00040 00041 case WM_NOTIFY: 00042 if(pSV) 00043 return pSV->DoNotify((NMHDR FAR *)lParam); 00044 break; 00045 00046 case WM_DESTROY: 00047 if(pSV) 00048 pSV->Destroy(); 00049 break; 00050 } 00051 00052 if(pSV) 00053 return pSV->DlgProc(hDlg,uMessage,wParam,lParam); 00054 else 00055 return FALSE; 00056 } 00057 00059 // 00060 // You can override this DlgProc if you want to handle specific messages 00061 // 00062 BOOL CALLBACK CDlg::DlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam) 00063 { 00064 return FALSE; 00065 } 00066 00068 // 00069 // Below are just default handlers for the virtual functions. 00070 // 00071 int CDlg::DoCommand(WORD wCmdID,WORD hHow) 00072 { 00073 switch( wCmdID ) 00074 { 00075 case IDOK: 00076 case IDCANCEL: 00077 EndDialog(wCmdID); 00078 break; 00079 } 00080 return 1; // not handled, just did Apply work. 00081 } 00082 00083 void CDlg::OnInit() 00084 { 00085 } 00086 00087 CDlg::CDlg(int DlgID, HWND hWnd, HINSTANCE hInst) 00088 : m_DlgID(DlgID), 00089 m_hParent(hWnd), 00090 m_Inst(hInst), 00091 m_bCreatedModeless(FALSE), 00092 m_hDlg(0) 00093 { 00094 } 00095 00096 // 00097 // 00098 // 00099 int CDlg::Do() 00100 { 00101 m_bCreatedModeless=FALSE; 00102 return DialogBoxParam( m_Inst, MAKEINTRESOURCE(m_DlgID), m_hParent, (DLGPROC)BaseDlgProc, (LPARAM)this); 00103 } 00104 00105 HWND CDlg::CreateModeless() 00106 { 00107 if(m_hDlg) 00108 return m_hDlg; 00109 00110 HWND hWnd=CreateDialogParam(m_Inst, MAKEINTRESOURCE(m_DlgID), m_hParent, (DLGPROC)BaseDlgProc, (LPARAM)this); 00111 if(hWnd) 00112 m_bCreatedModeless=TRUE; 00113 return hWnd; 00114 } 00115 00116 int CDlg::DoNotify(NMHDR * pHdr) 00117 { 00118 return FALSE; 00119 } 00120 00121 void CDlg::Destroy() 00122 { 00123 if(m_bCreatedModeless) 00124 { 00125 if(m_hDlg) 00126 m_hDlg=NULL; 00127 } 00128 } 00129 00130 CDlg::~CDlg() 00131 { 00132 if(m_hDlg) 00133 DestroyWindow(m_hDlg); 00134 } 00135 00136 void CDlg::SetDlgID(UINT id) 00137 { 00138 m_DlgID=id; 00139 } 00140 00141 void CDlg::SetInstance(HINSTANCE hInst) 00142 { 00143 m_Inst=hInst; 00144 } 00145

Generated on Sat May 15 19:39:45 2004 for test by doxygen 1.3.7