C++ und WTL
WTL bietet eine sehr einfache Möglichkeit die Fenstergröße von Dialogen vom Anwender verändern zu lassen. Die Klasse CDialogResize (deklariert in atlframe.h) macht dies in wenigen Schritten möglich.
Zunächst benötigt man einen Dialog mit WS_THICKFRAME Style (im Ressourceneditor: Rahmen: "Größe ändern"). Die Dialog Klasse muss von CDialogResize abgeleitet sein:
class CMainDlg : public CDialogImpl<CMainDlg>, public CDialogResize<CMainDlg>
Außerdem müssen Nachrichten an CDialogResize weitergeleitet werden. Dazu fügt man in die Massage Map ein:
BEGIN_MSG_MAP(CMainDlg) ... ... CHAIN_MSG_MAP(CDialogResize) END_MSG_MAP()
Um das Verhalten der controls beim Ändern der Größe zu steuern, fügt man eine DLGRESIZE_MAP ein. In dieser lässt sich durch den Eintrag DLGRESIZE_CONTROL(..) festlegen wie sich die controls bewegen bzw. wie sie ihre Größe ändern.
BEGIN_DLGRESIZE_MAP(CMainDlg) DLGRESIZE_CONTROL(ControlID, Flags) END_DLGRESIZE_MAP()
Dabei ist ControlID die ID des Dialog-Controls und Flag eine Kombination aus:
Im letzten Schritt wird mit dem Aufruf der Funktion DlgResize_Init() in OnInitDialog CDialogResize initialisiert.
void DlgResize_Init( bool bAddGripper = true, bool bUseMinTrackSize = true, DWORD dwForceStyle = WS_CLIPCHILDREN);
Sende ein Kommentar, Frage, Korrekturen, Beschimpfungen...
doxapp c++ Zur Übersicht home