Часто пишу программы с использованием диалоговых окон, обычно это делается путём создания окна в VS и вызова CreateDialog(xxx). После многократной работы над этим процессом я заметил множество сложностей и решил создать этот простой шаблон.
#include "stdafx.h" Это предварительно скомпилированный заголовочный файл VS, его можно удалить, если вы используете другую среду компиляции.
Количество кода минимально, поэтому достаточно просто просмотреть заголовочные файлы, чтобы понять основные принципы использования.
// Описание обратного вызова кнопки
// Формат обратного вызова такой: @hDlg — родительское окно, @windowId — id текущей кнопки
int CALLBACK about_callback(HWND hDlg, DWORD windowId)
{
MessageBoxA(hDlg, "Обратный вызов выполнен!", "Сообщение", MB_OK);
return 0;
}
// Основное диалоговое окно
void show()
{
// Инициализация диалогового окна
ctwin32::ctDialog ctd;
ctd.createMainDialog(560, 280);
//
ctd.setTitle("Запущено...");
//
// Цвет фона
ctd.setbgcolor(RGB(240, 240, 240));
// Цвет переднего плана
RECT rt = {0, ctd.hMainDlgRect.bottom - 70,
ctd.hMainDlgRect.right, ctd.hMainDlgRect.bottom};
ctd.setForecolor(RGB(35, 39, 54), rt);
// Другие компоненты
ctd.drawBmp(IDB_BITMAP1, 150, 70, 50, 50); // Поддерживается только формат bmp
ctd.setFontColor(RGB(81, 81, 81));
ctd.createText("Инициализация сетевых настроек...", 200, 85, 300, 40, 26);
ctd.createButton("О программе", 10, 10, about_callback);
}
``````markdown
// Начало цикла сообщений UI, поток здесь блокируется
ctd.showMainDialog();
}
// Входная точка.
int main()
{
show();
return 0;
}
Используемые IDB_BITMAP1 (в примере jpg, но следует преобразовать в bmp):
Результат тестирования:
При нажатии кнопки:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )