Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Редактор тексту
Створення редактора. На базі класу з ім’ям EDIT створюють однорядковий чи багаторядковий редактор тексту. Його використовують для введення значень рядкових та числових змінних, а також для створення та редагування текстових файлів. Цей редактор вміє виконувати функції виділення тексту, працювати з буфером обміну Clipboard та багато іншого. Для створення редактора викликають функцію CreateWindow. Першим аргументом вказують ім’я класу EDIT. Крім звичайних стилів вікна, для текстового редактора вказують стилі з символічними іменами з префіксом ES_ (табл.3.1). Вони впливають на зовнішній вигляд редактора та виконувані ним функції.
Таблиця 3.1. Список стилів текстового редактора
Приклад створення редактора тексту: #define ID_EDIT 2222 … HWND hEdit=CreateWindow(: EDIT", " Початковий текст", WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT, 30, 30, 300, 30, hwnd, (HMENU) ID_EDIT, hInstance, NULL); Другий аргумент тут передає рядкову константу “Початковий текст”. Цей рядок буде відображено у вікні редактора одразу після його створення. Але цей аргумент частіше вказує на NULL. Стиль вікна редактора містить конcтанту WS_BORDER. Тому навколо вікна редактора буде намальовано рамку. Константа ES_LEFT встановлює режим вирівнювання вмісту редактора по лівому краю. Ця ж константа визначає, що потрібно створити однорядковий редактор. Інші аргументи функції CreateWindow в цьому прикладі такі ж, як і для інших органів управління. Повідомлення. Повідомлення функції вікна редактора надсилають за допомогою функції SendMessage. . Функція вікна редактора тексту надсилає функції батьківскього вікна повідомлення WM_COMMAND. При цьому молодше слово параметра wParam мітсить ідентифікатор, а параметр lParam містить дескриптор вікна редактора тексту. Старше слово параметру wParam містить код сповіщення про здійснену дію. Додатки оброляють принаймні сповіщення з кодом EN_ERRSPACE. Приклад роботи з однорядковим редактором. Задача. Створити однорядковий редактор тексту та кнопку. При натисканні на кнопку вивести вікно повідомлень з текстом, який міститься у вікна редактора. Розв‘язок. #include Functions.h #define ID_EDIT 1001 #define ID_BUTTON 1002 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE hInstance; char szClassName[]=" EditClass"; char szTitle[]=" Приклад"; INT WINAPI WinMain (HINSTANCE hInst, HINSTANCE, PSTR, INT nCmdShow) {MSG msg; HWND hwnd; hInstance=hInst; if(! RegClass(WndProc, szClassNameCOLOR_WINDOW)) return FALSE; if(! (hwnd=CreateWindow(szClassName, szTitle, WS_OVERLAPPEDWINDOW|WS_VISIBLE, 100, 50, 364, 150, 0, 0, hInst, NULL))) return FALSE; while (GetMessage(& msg, NULL, 0, 0)) {TranslateMessage(& msg); DispatchMessage(& msg); } return msg.wParam; } LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { static HWND hEdit, hButton, hStatic; switch (msg) { case WM_CREATE: { hStatic=CreateWindow(" STATIC", " Введіть рядок і натисніть кнопку", WS_CHILD|WS_VISIBLE|SS_CENTER, 30, 10, 300, 20, hwnd, (HMENU)0, hInstance, NULL); hEdit=CreateWindow(" EDIT", NULL, WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT, 30, 40, 300, 30, hwnd, (HMENU)ID_EDIT, hInstance, NULL); SendMessage(hEdit, EM_LIMITTEXT, 15, 0L); hButton=CreateWindow(" BUTTON", " OK", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 130, 85, 100, 30, hwnd, (HMENU)ID_BUTTON, hInstance, NULL); SetFocus(hEdit); return 0; } case WM_COMMAND: { switch (LOWORD (wParam)) { case ID_EDIT: { if (HIWORD(wParam))==EN_ERRSPACE) MessageBox(hwnd, " Мало пам'яті", szTitle, MB_OK); return 0; } case ID_BUTTON: { char chBuff[16]; SendMessage(hEdit, EM_GETLINE, 0, (LPARAM)chBuff); MessageBox(hwnd, chBuff, szTitle, MB_OK); SetWindowText(hEdit, " \0"); SetFocus(hEdit); return 0; } } return 0; } case WM_DESTROY: {PostQuitMessage(0); return 0; } } return DefWindowProc(hwnd, msg, wParam, lParam); } Цей додаток в своєму головному вікні створює статичний орган (центрований по горизонталі текст “Введите строку и нажмите кнопку ОК”), під ним – однорядковий редактор тексту і, ще нижче, кнопку з написом ОК. Якщо ввести текст і натиснути кнопку ОК, на екрані з’явиться повідомлення, яке складається із введеного тексту.
|