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

150,50,470, 400, Hwnd,(hmenu)id_edit1,

((LPCREATESTRUCT) lParam) -> hInstance,

NULL);

Кожне дочірнє вікно має дескриптор вікна і його ідентифікатор, що є унікальним серед інших. Знання одного з цих елементів дозволяє вам одержати іншиї. Якщо ви знаєте дескриптор дочірнього вікна, то можете одержати його ідентифікатор у такий спосіб:

id = GetWindowLong (hwndChild, GWL_ID);

Тут, при створенні статичного елемента керування, використовується функція getcwd(), що служить для одержання поточного робочого каталогу. Т.е. повний шлях до поточного робочому каталогу виводиться в статичному елементі керування.

Створення смуг прокручування у вікні редагування, здійснюється шляхом додавання наступних значень у завданні стилю вікна: WS_HSCROLL| WS_VSCROLL.

  1. А тепер, щоб заповнити список іменами усіх файлів поточного каталогу, додайте до програми наступний код:

hWndEdit=CreateWindow("edit",NULL, WS_CHILDWINDOW|ES_MULTILINE|

WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL| ES_AUTOVSCROLL|ES_AUTOHSCROLL,

150,50,470, 400, hwnd,(HMENU)ID_edit1,

((LPCREATESTRUCT) lParam) -> hInstance,

NULL);

SendMessage (hwndList, LB_DIR, DDL_READWRITE|DDL_READONLY| DDL_HIDDEN|DDL_SYSTEM|DDL_DIRECTORY, (LPARAM) "*.*") ;

return 0 ;

  1. При зміні розмірів вікна, необхідно динамічно обновляти вміст структури rect:

SendMessage (hwndList, LB_DIR, DDL_READWRITE|DDL_READONLY| DDL_HIDDEN|DDL_SYSTEM|DDL_DIRECTORY, (LPARAM) "*.*") ;

return 0 ;

case WM_SIZE :

rect.right = LOWORD (lParam) ;

rect.bottom = HIWORD (lParam) ;

return 0 ;

  1. При запуску додатка фокус уведення повинний одержувати список:

rect.bottom = HIWORD (lParam) ;

return 0 ;

case WM_SETFOCUS :

SetFocus (hwndList) ;

return 0 ;

  1. Обробка повідомлення WM_COMMAND буде виглядати в такий спосіб:

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

{

static char szFile[MAXPATH], szBuffer[MAXPATH + 1] ;

static HWND hwndList, hwndText, hWndEdit;

static OFSTRUCT ofs ;

static BOOL bValidFile ;

case WM_SETFOCUS :

SetFocus (hwndList) ;

return 0 ;

case WM_COMMAND :

if (LOWORD (wParam) == 1 && HIWORD (wParam) == LBN_DBLCLK)

{

if (LB_ERR == (i = SendMessage (hwndList,

LB_GETCURSEL, 0, 0L)))

break ;

SendMessage (hwndList, LB_GETTEXT, i, (LPARAM) szBuffer) ;

if (-1 != OpenFile (szBuffer, &ofs, OF_EXIST | OF_READ))

{

bValidFile = TRUE ;

strcpy (szFile, szBuffer) ;

getcwd (szBuffer, MAXPATH) ;

if (szBuffer [strlen (szBuffer) - 1] != '\\')

strcat (szBuffer, "\\") ;

SetWindowText (hwndText, strcat (szBuffer, szFile)) ;

}

else

{

bValidFile = FALSE ;

szBuffer [strlen (szBuffer) - 1] = '\0' ;

chdir (szBuffer + 1) ;

getcwd (szBuffer, MAXPATH) ;

SetWindowText (hwndText, szBuffer) ;

SendMessage (hwndList, LB_RESETCONTENT, 0, 0L) ;

SendMessage (hwndList, LB_DIR, 0x37, (LONG) "*.*") ;

}

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