00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#include "pch.h"
00011
#include "dlg.h"
00012
00014
00015
00016
00017
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
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
00061
00062 BOOL CALLBACK
CDlg::DlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam)
00063 {
00064
return FALSE;
00065 }
00066
00068
00069
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;
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