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

InvalidateRect (hwnd, null, true) ;

}

return 0 ;

При обробці в WndProc повідомлення WM_COMMAND, для контролю обраного пункту, використовується функція Windows OpenFile. Ця функція в загальному виді виглядає так:

HFILE OpenFile(

LPCSTR lpFileName, // покажчик на ім'я файлу

LPOFSTRUCT lpReOpenBuff, // покажчик на буфер інформації про файл

UINT uStyle // режим відкриття

);

Якщо функція OpenFile повертає помилку, значить обраний не файл, а, можливо, підкаталог і змінна bValidFile встановлюється в FALSE. Потім для зміни підкаталогу в програмі HEAD використовується функція chdir. Програма посилає вікну списку повідомлення LB_RESETCONTEXT для відновлення контексту і повідомлення LB_DIR для заповнення вікна списку переліком файлів нового підкаталогу.

  1. При обробці повідомлення WM_PAINT в окно редагування буде виводитися уміст файлу, обраного в списку файлів. Для цього додайте до програми наступний код:

#include <windows.h>

#include <direct.h>

#define MAXPATH 256

#define MAXREAD 8192

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

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

{

static char sReadBuffer[MAXREAD] ;

Int iHandle, I ;

case WM_PAINT :

hdc = BeginPaint (hwnd, &ps) ;

SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;

SetTextColor (hdc, GetSysColor (COLOR_BTNTEXT)) ;

SetBkColor (hdc, GetSysColor (COLOR_BTNFACE)) ;

if (bValidFile && -1 != (iHandle =

OpenFile (szFile, &ofs, OF_REOPEN | OF_READ)))

{

i = _lread (iHandle, sReadBuffer, MAXREAD) ;

_lclose (iHandle) ;

SetWindowText(hWndEdit, sReadBuffer);

}

else

bValidFile = FALSE ;

EndPaint (hwnd, &ps) ;

return 0 ;

При обробці повідомлення WM_PAINT у віконній процедурі відкривається файл із використанням функції Windows OpenFile. Значенням функції, що повертається, є дескриптор файлу MS-DOS, що може бути переданий функціям Windows _lread і _lclose. Вміст файлу виводиться у вікно редагування за допомогою функції SetWindowText().

Практична частина

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

2. Створіть програму, аналогічну програмі завдання 2 Лабораторної роботи №5, але замість радіокнопок використовуйте список. Результат визначається в залежності від обраного рядка списку.

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

  1. Які списки можна створити на базі визначеного класу “listbox”?

  2. На базі якого класу створюється список, що випадає? Комбінацією яких інших елементів керування він є?

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

  4. Для чого звичайний додаток використовує статичні елементи керування? Чи одержує батьківське вікно такого елемента від нього повідомлення?

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