Größe eines Dialogfensters controllieren

fujitsufan

Erfahrenes Mitglied
Guten Tag,

wie schaffe ich es, ein Dialogfenster in der Größe flexibel zu gestalten und dies auch noch zu kontrollieren.
In der Dialogeigenschaft "Rahmen" habe ich den Parmeter auf "Größe ändern" gesetzt.

Dann fange ich in der Meldungsroutine die Koordinaten des Dialogfensters ab.
Wenn die Größe bestimmte Werte unterschreitet, soll der Dialog nicht mehr kleiner werden.
Irgenwie habe ich da einen Denkfehler, aber welchen.

Code:
BOOL FAR TEinzelteileDialog::MsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
  BOOL ret = TDialogEx::MsgProc(hWndDlg, Message, wParam, lParam);

  long width = 0, height = 0;
  
  switch(Message) {
    case WM_SIZE:
		//hier Größe des Gesamtdialogs korrigieren
      width = LOWORD(lParam);
	  height = HIWORD(lParam);

	  if((width < 460) || (height <320))
	  {
	  
                        if(width < 460)
                            width = 460;

                        if(height < 320)
                            height = 320;

	       SetWindowPos(hWndDlg, 0, 0, 0, width, height, 
                                                      SWP_NOMOVE|SWP_SHOWWINDOW);
	  }
	  else
	  {
		  
	  }

	  updateLayout(width, height);
      

      break;
  }

  return ret;
}

In der Funktion "updateLayout(width,height);" werden die enthaltenen Steuerelemente auf die Dialoggröße angepasst.

Wer kann mir eine Tipp geben?

Vielen Dank!

fujitsufan
 
Für die Kontrolle von maximaler oder minimaler Größe eignet sich die Nachricht 'WM_GETMINMAXINFO' besser:
C++:
BOOL FAR TEinzelteileDialog::MsgProc(HWND hWndDlg, UINT Message, WPARAM wParam, LPARAM lParam)
{
    switch(Message)
    {
        case WM_GETMINMAXINFO:
        {
            MINMAXINFO* pMM = (MINMAXINFO*)lParam;
            pMM->ptMinTrackSize.x = 800;  // Minimale Breite
            pMM->ptMinTrackSize.y = 660;  // Minimale Hoehe
            
            return TDialogEx::MsgProc(hWndDlg, Message, wParam, lParam);
        }
        
        default:
            return TDialogEx::MsgProc(hWndDlg, Message, wParam, lParam);
    }
}
Gruß
MCoder
 
Zurück