Example #1
0
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;
}
Example #3
0
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);
}