Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_progr_Win / Lab9.doc
Скачиваний:
9
Добавлен:
23.03.2015
Размер:
1.11 Mб
Скачать

Int up_lfx, up_lfy, lo_rtx, lo_rty;

BOOL CALLBACK TextDiaProc(HWND hdlg, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

switch (iMsg){

case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:

switch (LOWORD(wParam)){

case IDOK:

GetDlgItemText(hdlg, IDD_EDIT, textscreen, 80);

EndDialog(hdlg, TRUE);

break;

case IDCANCEL:

EndDialog(hdlg, TRUE);

break;

default: return 0;

}

break;

default: return 0;

}

return TRUE;

}

BOOL CALLBACK IntDiaProc(HWND hdlg, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

switch (iMsg){

case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:

switch (LOWORD(wParam)){

case IDOK:

up_lfx=GetDlgItemInt(hdlg, IDD_UP_LFX, NULL, 0);

up_lfy=GetDlgItemInt(hdlg, IDD_UP_LFY, NULL, 0);

lo_rtx=GetDlgItemInt(hdlg, IDD_LO_RTX, NULL, 0);

lo_rty=GetDlgItemInt(hdlg, IDD_LO_RTY, NULL, 0);

EndDialog(hdlg, TRUE);

break;

case IDCANCEL:

EndDialog(hdlg, TRUE);

break;

default: return 0;

}

break;

default: return 0;

}

return TRUE;

}

  1. Для забезпечення працездатності цих діалогів необхідно зв'язати їх з пунктами меню. А для цього модифікуйте функцію WndProc у такий спосіб:

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam) {

case WM_COMMAND:

switch (wParam){

case IDM_ABOUT:

DialogBox(hInstance, "aboutbox", hwnd,AboutDiaProc);

break;

case IDM_TEXT:

DialogBox(hInstance, "TEXTBOX", hwnd,TextDiaProc);

InvalidateRect(hwnd, null, true);

UpdateWindow(hwnd);

break;

case IDM_INTEGER:

DialogBox(hInstance, "INTBOX", hwnd,IntDiaProc);

InvalidateRect(hwnd, null, true);

UpdateWindow(hwnd);

break;

case IDM_EXIT:

SendMessage(hwnd, WM_CLOSE, 0, 0L);

break;

  1. Залишається тільки додати обробку повідомлення WM_PAINT і програма готова:

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

static HINSTANCE hInstance ;

static HPEN hPen;

case WM_PAINT :

hdc = BeginPaint (hwnd, &ps) ;

hPen=CreatePen(0,2,RGB(0,0,255));

SelectObject(hdc, hPen);

Rectangle(hdc, up_lfx, up_lfy, lo_rtx, lo_rty);

TextOut(hdc, 100, 40, textscreen, strlen(textscreen));

ValidateRect(hwnd, null);

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_DESTROY :

DeleteObject(hPen);

PostQuitMessage (0) ;

return 0 ;

Запустіть програму на виконання. Практична частина

  1. Створіть програму Dialogs, описану в лабораторній роботі.

2. Створіть програму, при виконанні команди File —> Start…яке, викликається діалогове вікно наступного виду:

Рисунок 2.20 Зовнішній вигляд програми калькулятора

При натисканні кнопки Result у полі редагування Edit 3 з'являється добуток двох чисел А и В.

Контрольні питання:

  1. Чи є діалогове вікно вікном Windows? Чим вони відрізняються від вікон, що перекриваються?

  2. Які існують способи розташування елементів керування в діалоговому вікні?

  3. Які кроки варто зробити для створення діалогового вікна?

  4. Які типи діалогових вікон існують? Чим вони відрізняються друг від друга?

  5. Чим відрізняються модальні діалоги від системних модальних?

  6. Що визначає ресурс шаблона діалогу?

  7. Що таке діалогова процедура? Чи є вона віконною функцією вікна діалогу?

  8. Чим відрізняється діалогова процедура від віконної і чим вони схожі?

  9. Чи одержує діалогова процедура повідомлення WM_PAINT, WM_CREATE, WM_DESTROY? Як відбувається обробка цих повідомлень?

Соседние файлы в папке Lab_progr_Win