INT_PTR CALLBACK DirectoriesDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { BOOL bReturn = FALSE; switch (Msg) { case WM_INITDIALOG: return (BOOL)HANDLE_WM_INITDIALOG(hDlg, wParam, lParam, Directories_OnInitDialog); case WM_COMMAND: HANDLE_WM_COMMAND(hDlg, wParam, lParam, Directories_OnCommand); bReturn = TRUE; break; case WM_NOTIFY: return (BOOL)HANDLE_WM_NOTIFY(hDlg, wParam, lParam, Directories_OnNotify); case WM_CLOSE: HANDLE_WM_CLOSE(hDlg, wParam, lParam, Directories_OnClose); break; case WM_DESTROY: HANDLE_WM_DESTROY(hDlg, wParam, lParam, Directories_OnDestroy); break; default: bReturn = FALSE; } return bReturn; }
//"Pen and brush settings" dialog procedure INT_PTR CALLBACK PBDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { try { //Message switch switch(uMsg) { //Everything is done with the message cracker macros case WM_INITDIALOG: return HANDLE_WM_INITDIALOG(hwndDlg,wParam,lParam,PBSettings_OnInitDialog); case WM_COMMAND: HANDLE_WM_COMMAND(hwndDlg,wParam,lParam,PBSettings_OnCommand); return FALSE; case WM_NOTIFY: return HANDLE_WM_NOTIFY(hwndDlg,wParam,lParam,PBSettings_OnNotify); case WM_CLOSE: EndDialog(hwndDlg,IDCANCEL); return TRUE; case WM_DRAWITEM: return HANDLE_WM_DRAWITEM(hwndDlg,wParam,lParam,PBSettings_OnDrawItem); } } catch(exception &ex) //Handle exceptions { ErrMsgBox(hMainWindow,ex,_T(__FUNCSIG__),MB_ICONERROR); EndDialog(hwndDlg,IDABORT); } return FALSE; }
BOOL CALLBACK AdvancedPageProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WM_INITDIALOG: return (BOOL)HANDLE_WM_INITDIALOG(hWnd, wParam, lParam, onInitDialog); case WM_NOTIFY: HANDLE_WM_NOTIFY(hWnd, wParam, lParam, onNotify); break; default: return FALSE; } return TRUE; }
INT_PTR CALLBACK OptionsPageProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: return HANDLE_WM_INITDIALOG(hwnd, wParam, lParam, Options_OnInitDialog); case WM_COMMAND: HANDLE_WM_COMMAND(hwnd, wParam, lParam, Options_OnCommand); return TRUE; case WM_DESTROY: HANDLE_WM_DESTROY(hwnd, wParam, lParam, Options_OnDestroy); return TRUE; case WM_NOTIFY: HANDLE_WM_NOTIFY(hwnd, wParam, lParam, Options_OnNotify); return TRUE; } return FALSE; }
// 학생 목록 팝업 프로시저의 정의 LRESULT CALLBACK StudentListPopupProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { static HWND hListView; // 메시지 별로 분기한다. switch (iMessage) { case WM_CREATE: // 학생 목록 팝업이 생성될 때 { // 연결된 학생 목록을 보여주는 리스트뷰를 생성한다. hListView = CreateWindow(WC_LISTVIEW, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER, 0, 0, 197, 410, hWnd, (HMENU) LISTVIEW_CONNECTED_STUDENT, App::hInstance, NULL); ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_SIMPLESELECT); SendMessage(hListView, WM_SETFONT, (WPARAM) App::HAppFont, (LPARAM) TRUE); // 리스트뷰에 칼럼을 추가한다. LVCOLUMN col; col.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; col.fmt = LVCFMT_LEFT; col.cx = 60; col.pszText = L"번호"; col.iSubItem = 0; ListView_InsertColumn(hListView, 0, &col); col.cx = 120; col.pszText = L"이름"; col.iSubItem = 1; ListView_InsertColumn(hListView, 1, &col); // 전체선택, 전체해제, 확인 버튼을 생성한다. CreateWindow(L"Button", L"전체선택", WS_CHILD | WS_VISIBLE, -1, 409, 72, 32, hWnd, (HMENU) BTN_SELECT_ALL, App::hInstance, NULL); CreateWindow(L"Button", L"전체해제", WS_CHILD | WS_VISIBLE, 69, 409, 72, 32, hWnd, (HMENU) BTN_DESELECT_ALL, App::hInstance, NULL); CreateWindow(L"Button", L"확인", WS_CHILD | WS_VISIBLE, 139, 409, 59, 32, hWnd, (HMENU) BTN_OK, App::hInstance, NULL); SendDlgItemMessage(hWnd, BTN_SELECT_ALL, WM_SETFONT, (WPARAM) App::HAppFont, (LPARAM) TRUE); SendDlgItemMessage(hWnd, BTN_DESELECT_ALL, WM_SETFONT, (WPARAM) App::HAppFont, (LPARAM) TRUE); SendDlgItemMessage(hWnd, BTN_OK, WM_SETFONT, (WPARAM) App::HAppFont, (LPARAM) TRUE); // 학생 목록 관리자와 동기화한다. SmartnetClientManager::GetInstance().SetListView(hListView); return 0; } case WM_ACTIVATE: // 학생 목록 팝업이 활성화되거나 비활성화될 때 // 학생 목록 팝업이 비활성화되었을 때 if (LOWORD(wParam) == WA_INACTIVE) { // 윈도우를 숨긴다. ShowWindow(hWnd, SW_HIDE); } return 0; case WM_COMMAND: // 통지 메시지를 처리하는 메시지 switch (LOWORD(wParam)) { case BTN_SELECT_ALL: SmartnetClientManager::GetInstance().SelectAll(); break; case BTN_DESELECT_ALL: SmartnetClientManager::GetInstance().DeselectAll(); break; case BTN_OK: // 사용자가 체크한 학생이 한 명이라도 있어야만 if (SmartnetClientManager::GetInstance().GetCheckedCount() > 0) { // 통지 메시지를 보내고 SendMessage(GetParent(hWnd), WM_COMMAND, MAKEWPARAM(STUDENT_LIST_OK_BTN, 0), 0); } // 윈도우를 숨긴다. ShowWindow(hWnd, SW_HIDE); break; } return 0; case WM_CTLCOLORBTN: // 버튼 배경색을 지정하는 메시지 { const HWND hChild = (HWND) lParam; if (hChild == GetDlgItem(hWnd, BTN_SELECT_ALL) || hChild == GetDlgItem(hWnd, BTN_DESELECT_ALL) || hChild == GetDlgItem(hWnd, BTN_OK)) return (LRESULT) CreateSolidBrush(RGB(100, 100, 100)); } break; case SLPM_SET_MODE: // 모드 변경 메시지 if (wParam == 0) // 하나 선택 모드 { ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_SIMPLESELECT); SetClientRect(hWnd, 197, 410); } else if (wParam == 1) // 체크 모드 { ListView_SetExtendedListViewStyle(hListView, LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES | LVS_EX_SIMPLESELECT); SetClientRect(hWnd, 197, 410 + 30); } return 0; case WM_NOTIFY: HANDLE_WM_NOTIFY(hWnd, wParam, lParam, StudentListPopup_OnNotify); return 0; } return DefWindowProc(hWnd, iMessage, wParam, lParam); }