PL1994 Geschrieben 23. September 2015 Geschrieben 23. September 2015 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 Zitieren
Guybrush Threepwood Geschrieben 23. September 2015 Geschrieben 23. September 2015 c++ - Why does GetSystemMetrics() return these values? - Stack Overflow Hast du das schon gesehen? Zitieren
PL1994 Geschrieben 6. Oktober 2015 Autor Geschrieben 6. Oktober 2015 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.