webForumDet fria alternativet

WinXP styles och egna komponenter

C/C++ur C/C++

2 svar · 285 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 993 inlägg
Frågan#1

Hej,

Jag sitter o skriver ihop ett litet windowsprogram med Win API. Jag skulle vilja att knappar och andra komponenter skulle bli "XP stylade", just nu ser de snarare ut som nåt från Win 3.11 med någon ful systemfont och fet text.

Jag skulle även vilja ha en egen komponent. Den skulle vara som en listbox fast liggande med numrerade bilder. Det skall gå och markera och dra runt bilderna i boxen med musen. Hur går man tillväga för att göra det?

Redigering: Fick dit "visual styles" men fonten som används på komponenterna ser fortfarande hemsk ut. Hur får jag dit standardfonten som används i alla andra program?

Alpha IIMedlem sedan maj 20002 993 inlägg
#2

Detta är fortfarande ett olöst fall ;) Samtidigt kan jag ju ta och fråga en till viss del relaterad fråga. Det är så att jag har en bild sparad som en array (32-bit RGBA) och skulle nu vilja rita upp den på fönstret. Det måste gå och byta bild också. Hur görs det?

Marcus Es avatarMarcus EMedlem sedan maj 20021 466 inlägg
#3

Det du vill göra måste göras i två steg. Först måste du få Win32-stil istället för Win16. När det är gjort kan du börja anpassa för XP-stil (teman).

Teckensnitt kan bytas med CreateFont eller GetStockObject.

En kontroll får du skapa genom att antingen utgå från en existerande eller skapa en helt ny. Använd subclassing för att komma åt alla meddelanden som skickas till kontrollen eller använd de som skickas till ägarfönstret (WM_PARENTNOTIFY

Jag vill vart rekommendera att överge alla Win32-tankar och fokusera på ett klassbibliotek, t.ex. MFC, WTL, VCL (C++ Builder) eller kanske .NET. Det kommer att öka din effektivitet avsevärt och du slipper ägna dig åt triviala saker som att byta teckensnitt.

130 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)