- •Методические указания
- •Оглавление
- •Теоретический материал
- •Введение
- •Типы данных Windows. Типы указателей Windows. Использование памяти
- •Венгерская нотация. Префиксы данных
- •Общая структура Windows-приложений
- •Описание класса (стиля) окна. Структура wndclass
- •Создание (визуализация) окна
- •Сообщения. Схема обработки. Прототипы функций-обработчиков сообщений
- •Ресурсы Windows-приложений
- •Встроенные редакторы ресурсов
- •Средства организации вывода данных
- •Средства организации ввода данных
- •Вывод растровых изображений в Windows-приложениях
- •Автоматические шаблоны (каркасы) windows-приложений (тип empty, simple)
- •Создать шаблон Windows-приложения (тип Empty) и изучить его свойства
- •Модифицировать шаблон
- •Создать шаблон Windows-приложения (тип Simple) и изучить его свойства
- •Типовой шаблон (каркас) windows-приложения (тшп)
- •Изучение свойств типового шаблона
- •Изучить листинг типового шаблона
- •Воспроизвести типовой шаблон
- •Изучить свойства типового шаблона
- •Модификация типового шаблона
- •Изменить интерфейс типового шаблона
- •Добавить строку приветствия в типовой шаблон
- •Использование типового шаблона
- •Организовать вывод данных с применением функций
- •Добавить ресурс - меню
- •Организовать ввод данных с применением меню и пользовательского диалогового окна
- •Автоматический шаблон (каркас) windows-приложения (тип hello)
- •Изучение свойств шаблона (тип Hello)
- •Создать шаблон Windows-приложения (тип Hello)
- •Изучить ресурсы шаблона
- •Изучить свойства шаблона
- •Модификация шаблона (тип Hello)
- •Получить типовой шаблон приложения (тшп) из шаблона (тип Hello)
- •Организовать ввод-вывод числовых данных с применением пользовательского диалогового окна
- •Индивидуальные задания
-
Организовать ввод-вывод числовых данных с применением пользовательского диалогового окна
Создать проект (WinHelloMy2) из шаблона Windows-приложения (тип Hello). Модифицировать меню приложения. По выбору подпункта Enter (Ввод) активизировать диалоговое окно для ввода числа. Введенное вещественное число возводить в квадрат, а полученный результат выводить с помощью окна сообщений. Примерный вид меню, диалогового окна и окна сообщений показан ниже. Результаты привести в ОТЧЕТЕ.



РЕКОМЕНДАЦИИ ПО ВЫПОЛНЕНИЮ ЗАДАНИЯ. Примерный порядок выполнения и используемые средства см. в [ВводДанныхЧерезДиалОкно, ФункцииВводаВывода, ВыводДанных]. В функции-обработчике DialEnter(…) сообщений диалогового окна, используемого для ввода исходного числа, процесс ввода реализовать через окошко редактирования, например, как показано ниже
LRESULT CALLBACK DialEnter (HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return FALSE;
case WM_COMMAND:
switch (wParam)
{
case IDOK:
Ввести Число как Строку
Преобразовать Строку в вещественное Число
EndDialog ( hDlg, TRUE);
Вывести подтверждение о результатах ввода
break;
case IDCANCEL:
EndDialog ( hDlg, FALSE);
break;
default:
return FALSE;
}
break;
default:
return FALSE;
}
return TRUE;
}; .
Инициализацию окна ввода, обработку введенного числа и вывод результата производить в функции WndProc (…)
LRESULT CALLBACK WndProc (…)
{
int wmId;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
switch (wmId)
{
…………………………
case ID_WORK_ENTER:
DialogBox (hInst, (LPCTSTR) IDD_DIALOG1,hWnd,(DLGPROC) DialEnter);
InvalidateRect (hWnd, NULL, TRUE);
UpdateWindow (hWnd);
break;
……………………..
}
break;
case WM_PAINT:
hdc = BeginPaint ( hWnd, &ps);
Вычислить Квадрат введенного вещественного Числа
Преобразовать числовое значение Квадрата в Строку
Вывести результат как Строку
EndPaint ( hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage (0);
break;
default:
return DefWindowProc ( hWnd, message, wParam, lParam);
}
return 0;
} .
-
Индивидуальные задания
Примерный перечень: - разработать пользовательский класс (стиль) основного окна (включая его размер, местоположение, дизайн, курсоры, кисти и т.д.); - разработать и реализовать пользовательское меню; - разработать и реализовать интерфейс приложения с использованием диалоговых окон; - разработать и реализовать интерфейс приложения с использованием меню и диалоговых окон; - создать проект Windows-приложения для ввода и вывода строковых, целых (знаковых и беззнаковых), вещественных данных в виде отдельных значений, а также в виде массивов значений. Выполнить обработку значений. Организовать интерфейс ввода-вывода и управления вычислениями посредством меню и окон; - организовать вывод графиков функций (параметры табулирования вводит пользователь); - организовать табулирование заданных функций (параметры табулирования вводит пользователь; результаты выводятся как в табличном так и графическом виде в одном или разных окнах).
ПРИЛОЖЕНИЕ. Режимы отображения
Таблица. Режимы отображения
|
Режим отображения
|
Номер режима |
по оси X |
по оси Y |
Логические единицы |
|
ММ_ТЕХТ |
1 |
вправо |
вниз |
пикселы |
|
MM_LOMETRIC |
2 |
вправо |
вверх |
0.1 мм |
|
MM_HIMETRIC |
3 |
вправо |
вверх |
0.01 мм |
|
MM_LOENGLISH |
4 |
вправо |
вверх |
0.01 дюйма |
|
MM_HIENGLISH |
5 |
вправо |
вверх |
0.001 дюйма |
|
MM_TWIPS |
6 |
вправо |
вверх |
1/1440 дюйма |
|
MM_ISOTROPIC |
7 |
любое |
любое |
произвольные (х = у) |
|
MM_ANISOTROPIC |
8 |
любое |
любое |
произвольные (х != у) |
Таблица. Режимы отображения
|
Константа |
Значение |
|
MM_ANISOTROPIC |
Произвольные единицы с произвольным масштабом осей
|
|
MM_HIENGLISH |
Логическая единица отображается в 0.001 дюйма. Положительные направления осей: X — направо, Y — вверх
|
|
MM_HIMETRIC
|
Логическая единица отображается в 0.01 миллиметра. Положительные направления осей: X — направо, Y — вверх
|
|
MM_ISOTROPIC |
Произвольные единицы с одинаковым масштабом по осям
|
|
MM_LOMETRIC
|
Логическая единица отображается в 0.1 миллиметра. Положительные направления осей: X — направо, Y — вверх |
|
MM_LOENGLISH |
Логическая единица отображается в 0.01 дюйма. Положительные направления осей: X — направо, Y — вверх
|
|
MM_TEXT |
Логическая единица отображается в пиксел устройства. Положительные направления осей: X — направо, Y — вниз
|
|
MM_TWIPS
|
Логическая единица отображается в 1/20 принтерной точки. Положительные направления осей: X — направо, Y — вверх |
ПРИЛОЖЕНИЕ. Стили окна
Таблица. Стили окна
|
Стиль
|
Описание |
|
WS_BORDER |
Создание окна с рамкой. |
|
WS_CAPTION |
Добавление заголовка к окну с рамкой |
|
WS_CHILD
|
Создание дочернего окна. Не используется с окнами стиля WS_POPUP |
|
WS_CHILDWINDOW |
Создание дочернего окна стиля WS_CHILD |
|
WS_CLIPCHILDREN
|
Используется при создании родительского окна; запрещает рисование родительского окна в области, занятой любым дочерним окном |
|
WS_CLIPSIBLINGS
|
Используется только со стилем WS_CHILD. Окна данного стиля исключают области, занятые другими дочерними окнами, из клиентской области дочернего окна при получении данным окном сообщения о перерисовке. В противном случае можно было бы рисовать в клиентской области другого дочернего окна |
|
WS_DISABLED
|
Создание изначально неактивного окна |
|
WS_DLGFRAME |
Создание окна с двойной рамкой без заголовка |
|
WS_EX_ACCEPTFILES
|
Указывает, что создаваемое окно принимает файлы методом ""drag-and-drop" |
|
WS_EX_DLGMODALFRAME
|
Создание окна с двойной рамкой, в котором может находиться дополнительный заголовок. Этот стиль может использоваться только для значения dwEx-Style |
|
WS_EX_NOPARENTNOTIFY
|
Указывает, что созданное дочернее окно не будет посылать родительскому окну сообщение WM_PARENTNOTIFY при создании или разрушении дочернего окна |
|
WS_EX_TOPMOST |
Указывает, что созданное окно должно располагаться поверх всех окон, не имеющих такого стиля, и оставаться выше остальных даже в неактивном состоянии |
|
WS_EX_TRANSPARENT |
Указывает, что созданное окно должно быть прозрачным. Все окна, расположенные под данным окном, не заслоняются им |
|
WS_GROUP
|
Используется только в диалоговых окнах. Этот стиль окна указывается для первого элемента управления в группе элементов управления. Пользователь может перемещаться от одного элемента управления к другому с помощью клавиш-стрелок |
|
WS_HSCROLL
|
Создание окна с горизонтальной полосой прокрутки |
|
WS_MAXIMIZE WS_MINIMIZE |
Создание окна максимального размера Создание окна минимального размера |
|
WS_MAXIMIZEBOX WS_MINIMIZEBOX
|
Создание окна, которое имеет кнопку максимизации Создание окна, которое имеет кнопку минимизации |
|
WS_OVERLAPPED |
Создание перекрывающегося окна |
|
WS_OVERLAPPEDWINDOW
|
Для создания перекрывающегося окна используются стили WS_OVERLAPPED, WS_THICKFRAME и WS_SYSMENU |
|
WS_POPUP |
Создание временного окна. Не используется с окнами стиля WS_CHILD |
|
WS_POPUPWINDOW |
Для создания временного окна используются стили WS_BORDER, WS_POPUP и WS_SYSMENU |
|
WS_SYSMENU
|
Создание окна, которое располагает кнопкой вызова системного меню. При использовании этого стиля для дочернего окна вместо стандартной кнопки вызова системного меню создается кнопка, позволяющая закрыть окно. Стиль WS_SYSMENU используется только для окон, имеющих заголовок |
|
WS_TABSTOP
|
Используется только в диалоговых окнах. Указывает на произвольное количество элементов управления, между которыми пользователь может перемещаться с помощью клавиши <ТаЬ>. С помощью последовательных нажатий <ТаЬ> можно перемещаться между элементами управления со стилем WS_TABSTOP |
|
WS_THICKFRAME |
Создание окна с толстой рамкой. Рамка используется для изменения размеров окна |
|
WS_VISIBLE
|
Создание окна, видимого сразу после создания. Используется для перекрывающихся и временных окон |
|
WS_VSCROLL
|
Создание окна с вертикальной полосой прокрутки |
ПРИЛОЖЕНИЕ. Состояния окна
Таблица. Состояния окна (параметры в ShowWindow)
|
Состояние
|
Описание |
|
SW_HIDE |
Прячет окно и переводит в активное состояние другое окно |
|
SW_MIINIMIZE |
Минимизирует окно и активизирует окно верхнего уровня в списке менеджера окон |
|
SW_RESTORE |
Действует так же, как и SW_SHOWNORMAL |
|
SW_SHOW |
Активизирует окно и выводит его в текущей позиции и текущего размера |
|
SW_SHOWDEFAULT
|
Активизирует окно и выводит его с использованием текущих умолчаний |
|
SW_SHOWMAXIMIZED
|
Активизирует окно и выводит его с максимальным размером |
|
SW_ SHOWMINIMIZED
|
Активизирует окно и выводит его в виде пиктограммы |
|
SW_SHOWMINNOACTIVATE
|
Выводит окно как пиктограмму; бывшее активным в данный момент окно остается активным |
|
SW_SHOWNA
|
Выводит окно с учетом его состояния в данный момент; активное в данный момент окно остается активным |
|
SW_SHOWNOACTIVATE
|
Выводит окно в его прежней позиции и прежнего размера; активное в данный момент окно остается активным |
|
SW_SHOWNORMAL
|
Активизирует окно и выводит его на экран. Если окно было увеличено или уменьшено до пиктограммы, то система Windows восстановит начальное положение и размер окна |
|
SW_SHOWSMOOTH
|
Выводит окно так, чтобы оно меньше всего перекрывалось с другими окнами |
ПРИЛОЖЕНИЕ. Коды виртуальных клавиш
Таблица. Коды виртуальных клавиш
|
Виртуальная клавиша Windows |
Идентификатор WINUSER.H |
Клавиша PC |
Шестнадцатиричное значение |
|
|
VK_LBUTTON |
|
01 |
|
|
VK_RBUTTON |
|
02 |
|
Да |
VK_CANCEL |
<Ctrl> + <Break> |
03 |
|
|
VK_MBUTTON |
|
04 |
|
Да |
VK_BACK |
<BackSpace> |
08 |
|
Да |
VK_TAB |
<Tab> |
09 |
|
|
VK_CLEAR |
<5> на цифровой клавиатуре |
0С |
|
Да |
VK_RETURN |
<Enter> |
0D |
|
Да |
VK_SHIFT |
<Shift> |
10 |
|
Да |
VK_CONTROL |
<Ctrl> |
11 |
|
Да |
VK_MENU |
<Alt> |
12 |
|
|
VK_PAUSE |
|
13 |
|
Да |
VK_CAPITAL |
<CapsLock> |
14 |
|
Да |
VK_ESCAPE |
<Esc> |
1В |
|
Да |
VK_SPACE |
<Spacebar> |
20 |
|
Да |
VK_PRIOR |
<PgUp> |
21 |
|
Да |
VK_NEXT |
<PgDn> |
22 |
|
|
VK_END |
<End> |
23 |
|
Да |
VK_HOME |
<Home> |
24 |
|
Да |
VK_LEFT |
< <- > |
25 |
|
Да |
VK_UP |
<|> |
26 |
|
Да |
VK_RIGHT |
< -> > |
27 |
|
Да |
VK_DOWN |
<|> |
28 |
|
|
VK_SELECT |
|
29 |
|
|
VK_PRINT |
|
2А |
|
|
VK_EXECUTE |
|
2В |
|
|
VK_SNAPSHOT |
|
2С |
|
Да |
VK_INSERT |
<lns> |
2D |
|
Да |
VK_DELETE |
<Del> |
2Е |
|
|
VK_HELP |
|
2F |
|
|
|
Клавиатура |
|
|
|
|
от 0 до 9 |
от 30 до 39 |
|
|
|
от А до Z |
от 41 до 5А |
|
|
VK_NUMPADO |
<0> на цифровой клавиатуре |
60 |
|
|
… |
… |
… |
|
|
VK_NUMPAD9
|
<9> на цифровой клавиатуре |
69
|
|
|
VK_MULTIPLY
|
<*> на цифровой клавиатуре |
6A
|
|
|
VK_ADD
|
<+> на цифровой клавиатуре |
6B
|
|
|
… |
|
|
|
|
VK_DIVIDE |
</> на цифровой клавиатуре |
6F |
|
|
… |
|
|
|
Да |
VK_F1 |
<F1> |
70
|
|
Да (по <F10>) |
…. |
|
|
|
|
VK_F12
|
<F12>
|
7B
|
|
|
… |
|
|
|
|
VK_F24
|
|
87
|
|
|
….. |
|
|
ПРИЛОЖЕНИЕ. Структура WNDCLASS
Таблица. Определения полей структуры WNDCLASS
|
Имя поля |
Константа |
Значение |
|
Style |
Определяет стиль класса. Различные стили могут комбинироваться при помощи побитовой операции "логическое ИЛИ". Возможны следующие значения поля стиля: |
|
|
|
CS_BYTEALIGNCLIENT CS_BYTEALIGNWINDOW |
Использовать границы по байту по оси X; выравнивание клиентской области окна. Использовать границы по байту по оси X; выравнивание окна |
|
|
CS_DBCLKS
|
Окну будут посылаться сообщения о двойном щелчке кнопки "мыши" |
|
|
CS_HREDRAW
|
Обеспечивается перерисовка содержимого клиентской области окна при изменении размера окна по горизонтали |
|
|
CS_KEYCVTWINDOW |
Будет выполняться преобразование виртуальных клавиш |
|
|
CS_NOCLOSE |
В системном меню блокируется выбор пункта для закрытия окна |
|
|
CS_NOKEYCVT |
Отключается преобразование виртуальных клавиш |
|
|
CS_OWNDC |
Каждому экземпляру окна присваивается собственный контекст изображения |
|
|
CS_PARENTDC |
Классу окна передается контекст изображения родительского окна |
|
|
CS_SAVEBITS |
Часть изображения на экране, закрытая окном, сохраняется |
|
|
CS_VREDRAW
|
Обеспечивается перерисовка содержимого клиентской области окна при изменении размера окна по вертикали |
|
IpfnWndProc
|
|
Значение указателя на функцию окна, которая выполняет все задачи, связанные с окном |
|
cbClsExtra
|
|
Задается количество дополнительных байт, выделяемых структуре WNDCLASS (обычно NULL |
|
cbClsExtra
|
|
Задается количество дополнительных байт, выделяемых для всех дополнительных структур, которые создаются с использованием данного класса окна (обычно NULL) |
|
hlnstance |
|
Определяется экземпляр приложения, регистрирующий класс окна |
|
hlcon |
|
Задается пиктограмма, которая используется при выводе окна в виде пиктограммы (обычно NULL) |
|
hCursor |
|
Соответствует hlcon за исключением того, что определяет курсор, используемый для данного окна (обычно NULL) |
|
hbrBackGround |
Определяется кисть, используемая для закраски фона окна. Значением данного параметра может быть как идентификатор физической кисти, так и значение цвета. При использовании значения цвета нужно выбрать одно из следующего списка и прибавить к нему 1 |
|
|
|
COLOR_SCROLLBAR
|
|
|
|
COLOR_BACKGROUND
|
|
|
|
COLOR_ACTIVECAPTION …. |
|
|
|
COLOR_WINDOW
|
|
|
|
COLOR_WINDOWTEXT
|
|
|
|
COLOR_CAPTIONTEXT
|
|
|
|
COLOR_APPWORKSPACE
|
|
|
|
COLOR_HIGHLIGHT
|
|
|
|
COLOR_HIGHLIGHTTEXT
|
|
|
|
…. |
|
|
IpszMenuName |
|
Длинный указатель на строку символов, заканчивающуюся "О", которая определяет имя ресурса меню (может равняться NULL) |
|
IpszClassName |
|
Длинный указатель на строку символов, заканчивающуюся "0", которая определяет имя класса. Имя класса должно быть уникальным, чтобы не возникало проблем при разделении класса между приложениями |
ПРИЛОЖЕНИЕ. Опции меню
Таблица. Опции, наиболее часто используемые при создании меню
|
Опция |
Использование |
|
CHECKED |
Рядом с пунктом меню располагается отметка |
|
END |
Данный пункт меню является последним пунктом выпадающего или статического меню |
|
GRAYED
|
Пункт меню неактивен и выводится в списке пунктов меню бледным |
|
HELP
|
Пункт меню является выровненным по правому краю статическим меню, выбираемым с клавиатуры |
|
INACTIVE
|
Пункт меню выводится в списке, но не может быть выбран в данных обстоятельствах |
|
MENUBREAK |
Пункт меню помещается в новый столбец |
|
MENUBARBREAK
|
Пункт меню помещается в новый столбец.. Пункты разделяются чертой |
|
OWNERDRAW |
За вывод изображения пункта меню, включая выделенное, неактивное и отмеченное состояния, отвечает владелец меню |
|
POPUP |
При выборе данного пункта выводится список пунктов подменю |
Таблица. Опции, используемые с операторами MENUITEM и POPUP
|
Опция |
Значение |
|
DISCARDABLE |
Меню может быть удалено из памяти, если больше не используется |
|
FIXED |
Меню постоянно находится в памяти |
|
LOADONCALL |
Меню загружается при обращении |
|
MOVEABLE |
Меню может быть перемещено в другую область памяти |
|
PRELOAD |
Меню загружается при запуске программы |
|
CHECKED |
Рядом с названием пункта меню может стоять метка выбора. (Не используется для меню верхнего уровня.) |
|
GRAYED |
Название пункта меню выделяется серым цветом и не может быть выбрано |
|
HELP |
Может быть связана с командой вызова помощи. Применяется только с MENUITEM |
|
INACTIVE |
Пункт меню не может быть выбран |
|
MENUBARBREAK |
Если используется для меню верхнего уровня, то название пункта будет записано с новой строки. Если используется для выпадающих меню, то название пункта будет размещено в новом столбце. В этом случае оно будет отделено чертой |
|
MENUBREAK |
То же, что и MENUBARBREAK, но разделительная черта не используется |
ПРИЛОЖЕНИЕ. Параметры функции CreatePen()
Таблица. Значения первого параметра функции CreatePen() (стили перьев)
|
Значение |
Результат |
|
PS_SOLID |
Сплошная линия |
|
PS_DASH |
Пунктирная линия (только для линий толщиной 1) |
|
PS_DASHDOT |
Линия из точек (только для линий толщиной 1) |
|
PS_DASHD0TD0T |
Штрихпунктирная линия (только для линий толщиной 1) |
|
PS_NULL |
Нуль-перо (невидимо; удобно для заливки фигур без контура) |
|
PS_INSIDEFRAME |
Для замкнутых фигур ограничивающие линии проводятся внутри заданных координат фигуры |
ПРИЛОЖЕНИЕ. Функция MessageBox()
Таблица. Наиболее распространенные значения параметра МВТуре
|
Значение
|
Результат
|
|
MB_ABORTRETRYIGNORE |
Отображаются кнопки Abort, Retry и Ignore
|
|
MB_ICONEXCLAMATION
|
Отображается пиктограмма с восклицательным знаком
|
|
MB_ICONINFORMATION
|
Отображается информационная пиктограмма с буквой "I"
|
|
MB_HAND |
Отображается пиктограмма с надписью "Stop"
|
|
MB_ICONQUESTION
|
Отображается пиктограмма с вопросительным знаком
|
|
MB_ICONSTOP
|
То же, что и MB_HAND |
|
MB_OK
|
Отображается кнопка ОК |
|
MB_OKCANCEL
|
Отображаются кнопки ОК и Cancel |
|
MB_RETRYCANCEL
|
Отображаются кнопки Retry и Cancel |
|
MB_YESNO
|
Отображаются кнопки Yes и No |
|
MB_YESNOCANCEL
|
Отображаются кнопки Yes, No и Cancel
|
Таблица. Значения, возвращаемые функцией MessageBox()
|
Нажатая кнопка |
Возвращаемое значение |
|
Abort |
IDABORT |
|
Retry |
IDRETRY |
|
Ignore |
IDIGNORE |
|
Cancel |
IDCANCEL |
|
No |
IDNO |
|
Yes |
IDYES |
|
OK |
IDOK |
ПРИЛОЖЕНИЕ. Функция MessageBeep()
Таблица. Символические константы функции MessageBeepQ
|
Константа |
Звук |
Обозначение в диалоговом окне "Звук" |
|
0xFFFFFFFF |
Сигнал динамика компьютера |
— |
|
MB_ICONASTERISK |
SystemAsterisk |
Звездочка |
|
MB_ICONEXCLAMATION |
SystemExclamation |
Восклицание |
|
MB_ICONHAND |
SystemHand |
Критическая ошибка |
|
MB_ICONQUESTION |
SystemQuestion |
Вопрос |
|
МВ_ОК |
SystemDefault |
Стандартный звук |
ПРИЛОЖЕНИЕ. Стили диалоговых окон
Таблица. Наиболее распространенные стили диалоговых окон
|
Значение
|
Эффект |
|
DS_MODALFRAME
|
Диалоговое окно с модальной рамкой; этот стиль может использоваться как для модальных, так и для немодальных окон
|
|
WS_BORDER |
Окно с обычной рамкой
|
|
WS_CAPTION |
Окно со строкой заголовка
|
|
WS_CHILD |
Окно создается как дочернее
|
|
WS_HSCROLL
|
Окно с горизонтальной полосой прокрутки
|
|
WS_MAXIMIZEBOX
|
Окно с кнопкой максимизации
|
|
WS_MINIMIZEBOX
|
Окно с кнопкой минимизации
|
|
WS_POPUP
|
Окно отображается поверх всех других окон
|
|
WS_SYSMENU
|
Окно с системным меню
|
|
WS_TABSTOP
|
Элементы управления могут быть выбраны последовательным нажатием клавиши [TAB]
|
|
WS_VISIBLE |
Окно отображается при вызове
|
|
WS_VSCROLL
|
Окно с вертикальной полосой прокрутки
|
ПРИЛОЖЕНИЕ. Встроенные пиктограммы
Таблица. Встроенные пиктограммы
|
Константа
|
Вид пиктограммы |
|
IDI_APPLICATION
|
Стандартная системная пиктограмма |
|
IDI_ASTERISK
|
Информационная пиктограмма с буквой "I” |
|
IDI_EXCLAMATION
|
Пиктограмма с восклицательным знаком |
|
IDI_HAND
|
Пиктограмма с надписью "Stop" |
|
IDI_QUESTION
|
Пиктограмма с вопросительным знаком |
|
IDI_WINLOGO
|
Пиктограмма с логотипом Windows |
ПРИЛОЖЕНИЕ. Встроенные курсоры
Таблица. Некоторые стандартные курсоры
|
Константа |
Форма курсора |
|
IDC_ARROW |
Стандартный указатель типа "стрелка" |
|
IDC_CROSS |
Перекрестие |
|
IDC_IBEAM |
Текстовый курсор |
|
IDC_WAIT |
Песочные часы
|
ПРИЛОЖЕНИЕ. Встроенные кисти
Таблица. Некоторые стандартные кисти
|
Константа |
Тип фона |
|
BLACK_BRUSH |
Черный |
|
DKGRAY_BRUSH |
Темно-серый |
|
HOLLOW_BRUSH |
"Прозрачный" |
|
LTGRAY_BRUSH |
Светло-серый |
|
WHITE BRUSH |
Белый |
ПРИЛОЖЕНИЕ. Тексты программ
char MyString[20];
int MyInt;
char WorkString[20];
float MyFloat = 12;
float Square;
char Rezult[50];
char Comment1[]= "Квадрат ";
char Comment2[]= "равен ";
char OutputString[50] = “”;
……………………
LRESULT CALLBACK DialEnter (HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return FALSE;
case WM_COMMAND:
switch (wParam)
{
case IDOK:
//enter MyString from IDC_EDIT1 as text
GetDlgItemText (hDlg, IDC_EDIT1, MyString,15);
//enter MyInt from IDC_EDIT1 as int
MyInt = GetDlgItemInt (hDlg, IDC_EDIT1, NULL, 1);
//wsprintf(WorkString, "%d", MyInt); or
_gcvt (MyInt, 15, WorkString);
//enter MyFloat from IDC_EDIT1 as float
//by transforming text MyString into float MyFloat
MyFloat = atof (MyString);
EndDialog (hDlg,TRUE);
//MessageBox (hWnd, MyString, "TEXT-FLOAT", MB_OK);
//MessageBox (hWnd, WorkString,"INTEGER", MB_OK);
break;
case IDCANCEL:
EndDialog(hDlg,FALSE);
break;
default:
return FALSE;
}
break;
default:
return FALSE;
}
return TRUE;
};
…………………………
LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
TCHAR szHello[MAX_LOADSTRING];
LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst,(LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC) About);
break;
case ID_WORK_ENTER:
DialogBox(hInst,(LPCTSTR)IDD_DIALOG1,hWnd,(DLGPROC)DialEnter);
InvalidateRect(hWnd, NULL, TRUE);
UpdateWindow(hWnd);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
Square = MyFloat * MyFloat;
_gcvt(Square, 15, Rezult);
TextOut(hdc,170, 0, Rezult,strlen(Rezult));
//wsprintf(Rezult,"Квадрат = %d",Square);
//OutputString = wcscat(OutputString,Comment1);
//OutputString = wcscat(OutputString, MyFloat);
//OutputString = wcscat (OutputString,Comment2);
//OutputString = wcscat (OutputString, Rezult);
//TextOut(hdc,150, 40, OutputString,strlen(OutputString));
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
} .
