#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
Комментариев нет:
Отправить комментарий