Стиль win32 api приложения
Проблема втом что кнопки квадратные, безликие и т.д. и т.п.
Как сделать управляющие элементы как текущая тема в винде ?
В этой статье подробно объясняется что нужно и почему так. Ну а как именно зависит от копмилятора, используемого тобой.
#include <Windows.h>
#define ID_MYBUTTON 1
// оконная процедура
LRESULT CALLBACK WndProc(HWND hWnd, /UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hMainWnd;
char szClassName[] = "myWinClass";
WNDCLASSEX wc;
MSG msg;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground= (HBRUSH) (COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.lpszClassName= szClassName;
wc.hIconSm = NULL;
// регистрируем класс окна
RegisterClassEx(&wc);
// создаём главное окно отбражаем его
hMainWnd = CreateWindow(szClassName, "Projector", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
(HWND)NULL, (HMENU)NULL, (HINSTANCE)hInstance, NULL);
// показываем наше окно
ShowWindow(hMainWnd,nCmdShow);
UpdateWindow(hMainWnd);
while (GetMessage(&msg, NULL,0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// Оконная процедура
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
CreateWindow("button","My button",WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
5,5,100,20,hWnd,(HMENU)ID_MYBUTTON,NULL,NULL);
return 0;
case WM_DESTROY:
/* пользователь закрыл окно, программа может завершаться */
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0;
}
сделал всё как тут
и ничё не выходит ((
если у кого получилось распишите в подробностях
ниче не выходит - откуда? откуда и что должно выйти?
стиль виндовс должен передаться на управляющие элементы главного окна.
Цитата:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
publicKeyToken="6595b64144ccf1df"
language="*"
processorArchitecture="x86"/>
</dependentAssembly>
</dependency>
</assembly>
А «<assemblyIdentity processorArchitecture="*" version="5.1.0.0" type="win32" name="App"/>» не нужна совсем?Просто у меня без этой строки оно вроде не очень-то и хотело работать
Может и нужна, я честно говоря вырезал из большого манифеста который попался первым под руку...
А разве MSVC++ сам манифест готовый не внедряет?
Только для MSVCRxx(D).dll,так что увы