#cpp #winapi #mingw
Пытаюсь в окне сделать кнопку.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
HFONT hFont;
HWND hButton;
switch(message) {
case WM_CREATE:
hButton = CreateWindow("button", "Press me!",
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
5, 5, 100, 100,
hWnd, (HMENU)(1),
(HINSTANCE)GetWindowLong(hWnd, -6), NULL);
hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
SendMessage(hButton, WM_SETFONT, (WPARAM)hFont, 1);
return 0 ;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam) ;
}
Получается такая:
А как сделать кнопку, по стилю как в остальных приложениях (такую, например: ). Система
Windows 7, компилятор gcc.exe (tdm64-1) 5.1.0.
Ответы
Ответ 1
Действительно, как сказал Abyx, надо было добавить манифест (я надеялся, что есть путь проще). В итоге порядок действий: Создать файл Application.manifest (например в директории с main.c):Создать файл ресурсов resources.rc в той же директории, что и манифест, в которой будет одна строка: 1 24 "Application.manifest" Далее нужно скомпилировать файл ресурсов (выполнить команду в командной строке): windres resources.rc -o resources.o Нужно добавить некоторый код в main.cpp: #define _WIN32_WINNT 0x0600 //для запуска нужна система Vista или новее #include Just button. #include int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { INITCOMMONCONTROLSEX icex; icex.dwSize = sizeof(INITCOMMONCONTROLSEX); icex.dwICC = ICC_STANDARD_CLASSES; InitCommonControlsEx(&icex); /* Далее код создания окна и все остальное */ } Ну и теперь нужно непосредственно скомпилировать программу (естественно надо не забыть про библиотеку): g++ -o program.exe main.cpp resources.o -lcomctl32 -mwindows
Комментариев нет:
Отправить комментарий