Zum Inhalt springen

Höhe der Titelleiste eines Fensters auslesen

Empfohlene Beiträge

Hallo,

um verschiedene Child Windows in ein mein Hauptfenster möglichst passgenau einzufügen, bräuchte ich die Höhe der Titelleiste. Um diese auszulesen, werden auch verschiedene Wege vorgeschlagen, die aber an der dafür wohl eigentlich vorgesehenen Funktion "GetSystemMetrics" vorbeigehen. Ich würde das schon gerne mit dieser bewerkstelligen.

Nach dieser Seite müsste der dafür richtige Index "SM_CYCAPTION" sein: https://msdn.microsoft.com/en-us/library/aa929225.aspx

Damit habe ich es versucht. Hier der Code:

MainFrame.h


#pragma once


#include <afxcmn.h>

#include <afxwin.h>


class MainFrame : public CFrameWnd

{

private:

	const int MAINFRAME_HEIGHT = 768, MAINFRAME_WIDTH = 1024, TREE_HEIGHT = MAINFRAME_HEIGHT - GetSystemMetrics(SM_CYCAPTION), TREE_WIDTH = MAINFRAME_WIDTH / 4;


	CTreeCtrl tree;


public:

	MainFrame();

	MainFrame(CSize displaySize);

};

MainFrame.cpp

#include "MainFrame.h"


MainFrame::MainFrame()

{

	Create(NULL, _T("MainFrame"));

}


MainFrame::MainFrame(CSize displaySize)

{

	Create(NULL, _T("MainFrame"), WS_OVERLAPPEDWINDOW, CRect(displaySize.cx / 2 - MAINFRAME_WIDTH / 2, displaySize.cy / 2 - MAINFRAME_HEIGHT / 2, displaySize.cx / 2 + MAINFRAME_WIDTH / 2, displaySize.cy / 2 + MAINFRAME_HEIGHT / 2));


	tree.Create(WS_VISIBLE | WS_BORDER | WS_CHILD | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_NOTOOLTIPS | TVS_EDITLABELS, CRect(0, 0, TREE_WIDTH, TREE_HEIGHT), this, 1);

}

Durch "Herumprobieren" habe ich inzwischen festgestellt, dass die Titelleistenhöhe etwa 43px beträgt. "GetSystemMetrics(SM_CYCAPTION)" gibt 23px zurück.

Wie gesagt, mir ist bewusst, dass es auch andere Wege gibt, um an die Höhe zu kommen, aber wenn "GetSystemMetrics" dafür eigentlich vorgesehen ist, wird das ja wohl auch damit hinzubekommen sein.

Deshalb die Frage: Ist "GetSystemMetrics(SM_CYCAPTION)" grundsätzlich dafür gedacht oder habe ich die Funktion falsch verstanden? Was sind die 23px denn dann eigentlich?

Gruß

PL1994

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Danke für deine Antwort.

Habe versucht, das Problem durch Erhöhung der Mindestversion zu lösen. Leider bekomme ich trotzdem immer wieder die Angabe der 23px. Wird wohl stimmen, dass Windows dahingehend absichtlich "lügt". Schade.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Deine Meinung

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich an , um mit Deinem Konto zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.


Fachinformatiker.de, 2020 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung