2010-07-24 13 views
7

Ich habe vor ein paar Tagen Programmierung Windows Fifth Edition bestellt, und fing an, damit zu arbeiten.Wie kann ich das Win32 API-Fenster moderner aussehen lassen?

Ich beginne zu lernen, die win32 api, aber ich habe eine Frage. Die Fenster sehen überhaupt nicht modern aus. Wie behebe ich das?

Es sieht derzeit so aus, Mistschrift und alle.

enter image description here

Vielen Dank im Voraus!

Machiel

+0

Sind Sie völlig neu in der Programmierung? Wenn ja, empfehle ich Ihnen, sich dies anzusehen: http://www.microsoft.com/express/windows/ –

+2

@Camilo Martin: Die visuellen Designer in Visual Studio sind nur für verwaltete Projekte. Sie funktionieren nicht für C und C++. –

+0

@Billy ist mein Punkt, dass er Visual Basic stattdessen betrachten sollte. Oder Delphi, wenn er die Aufführung von C. mag. –

Antwort

10

die Schrift richtig machen Sie diese nach CreateWindow(Ex) rufen sollte:

NONCLIENTMETRICS ncm; 
ncm.cbSize = sizeof(NONCLIENTMETRICS); 
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0); 
HFONT hFont = ::CreateFontIndirect(&ncm.lfMessageFont); 
::SendMessage(hwnd, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE, 0)); 
+4

Es tut mir leid, aber das ist nicht korrekt und sollte nicht als Antwort markiert werden, siehe http://blogs.msdn.com/b/oldnewthing/archive/2005/07/07/436435.aspx – Anders

+1

Es ist nicht falsch . – StackedCrooked

+3

Haben Sie meinen Link überprüft? Es sagt Ihnen sogar, was die richtige API ist "Es wurde während der Entwicklung von Windows 95 in der Hoffnung erstellt, die neue Standard-GUI-Schriftart zu werden, aber im Juli 1994 hat Windows selbst die Verwendung der verschiedenen von der SystemParametersInfo-Funktion zurückgegebenen Schriftarten eingestellt." – Anders

4

Sie nicht, es scheint, tatsächlich lesen das Buch. Sie suchen nach WM_SETFONT. Es gibt einen Grund, warum die allgemeinen Kontrollen nicht das erste sind, was das Buch abdeckt.

+0

Ich liebe es, zufällige Downvotes zu bekommen, ohne auch nur einen verdammten Kommentar zu haben. NICHT! –

+0

+1, weil Ihr Punkt gültig ist. –

+1

Ich denke, die Downvotes sind, weil er mehr als Schriften sucht, er sucht insgesamt einen moderneren Stil. (Da ich selbst nicht über die Angelegenheit Bescheid weiß, vermute ich, dass es ein anderes Widget-Set und möglicherweise eine ganz andere Reihe von APIs gibt, die irgendwie beteiligt sind.) Beachten Sie, dass ich keinen Downvote hinterlassen habe. – fennec

0

Sie könnten einige Screenshots genau über die Unterschiede, über die Sie sprechen, veröffentlichen, dies würde Ihnen helfen, herauszufinden, was Sie ändern müssen.

Im Allgemeinen würde ich sagen, dass Sie wahrscheinlich ein entsprechendes Manifest mit Ihrer App hinzufügen müssen, damit Ihre App die neuesten allgemeinen Steuerelemente verwendet.

Auch in diesen Tagen die meisten UI ist nicht mit SDK-Stil Code entwickelt, das ist sehr schwer zu programmieren/pflegen, stattdessen eine Art UI-Bibliothek, zumindest MFC verwenden.

+0

Visuelle Stile sind bereits aktiviert. Ein bisschen merkwürdig. Aber es ist die 5. Ausgabe ... –

2

Vielleicht möchten GetThemeSysFont überprüfen LOGFONT eines geeigneten Systems Schriftart zu füllen, erstellen Sie es CreateFontIndirect verwenden und WM_SETFONT es zu jedem Steuer zuweisen, die Sie erstellen.

Nach meinem Wissen gibt es keine Möglichkeit, einen anderen Standard für neu erstellte Fenster in Ihrer Anwendung festzulegen. Es gibt auch keine Möglichkeit, alle Fenster, die Sie bereits erstellt haben, in einem einzigen Schritt zu setzen (dh, anstatt sie alle einzeln zu durchlaufen oder einzeln zuzuordnen). Die Ausnahme sind Dialogfelder, die bei der Erstellung aus Ressourcen der Ressource ermöglichen, die Schriftart anzugeben, die für alle Steuerelemente im Dialogfeld verwendet wird.

+2

Nein, Sie möchten nicht DEFAULT_GUI_FONT verwenden, siehe http://blogs.msdn.com/b/oldnewthing/archive/2005/07/07/436435.aspx – Anders

+0

Hm, gut Anruf. Aktualisiert. –

Verwandte Themen