Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Fenster mit dünnen Rahmen bewegen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.07.2007, 19:23 Uhr
~Stefan667
Gast


Hi,

kennt jemand von euch eine Möglichkeit, ein Fenster mittels Maus zu bewegen, wenn dieses nur einen dünnen, bzw. keinen Rahmen hat. Quasi durch Klick auf den Client Bereicht.

Ich bräuchte so etwas dringend

Grüße Stefan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
30.07.2007, 22:41 Uhr
CppProgrammer



Schau dir vielleicht mal dieses Projekt hier an, das könnte dir wahrscheinlich weiterhelfen.

www.codeproject.com/dialog/cdragdialog.asp
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.07.2007, 08:40 Uhr
Bruder Leif
dances with systems
(Operator)


Es gab da mal was, mit der Message WM_NCHITTEST, geschickt mit WPARAM=-2 und LPARAM=0 (oder andersrum, ist ewig her)...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.07.2007, 10:29 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


WM_NCHITTEST wird an das Fenster gesendet in dem die Maus ist wenn diese bewegt wird.
Mann könnte das wahrscheinlich abfangen und das Fenster selber bewegen...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
31.07.2007, 11:05 Uhr
~Stefan667
Gast


Hallo, danke für eure Antworten, ich habs hinbekommen. Funktioniert nicht soooo gut, denn wenn man die Maus zu schnell bewegt bleibt das Fenster stehen. Man müsste also noch ClipCursor() einbauen, so das die Maus im bewegenden Fenster bleibt, aber für mein Zwecke reicht das erstmal aus. Wenns jemanden interessiert:


C++:
BOOL CDescriptionWindow::PreTranslateMessage(MSG* pMsg)
{
     //The code starts here
     static bool mouse_down = false;
     static CRect MainRect;
     CRect rect;
     static HCURSOR cursor; // use this if you want the
       // “dragging” cursor different from the normal one
     static CPoint point;
     switch(pMsg->message)
     {
     case WM_LBUTTONDOWN:
         //save current dialog’s rectangle
         GetWindowRect(&MainRect);
         //save current cursor coordinate
         point = pMsg->pt;
         ScreenToClient(&point);
        
         //change the sign
         mouse_down = true;
         break;
     case WM_LBUTTONUP:
         //stop the sign
         mouse_down = false;
         //gimme a standard cursor now!!
         cursor = ::AfxGetApp()->LoadStandardCursor(IDC_ARROW);
         if( m_pHandleToRelatedTextWindow != NULL )
         {
            
             GetWindowRect( &rect );
             m_pHandleToRelatedTextWindow->MoveWindow( rect.left+10, rect.top+10, 280, 150);

             if( m_strMarkerNumber!=_T("") && m_strRelatedFile!=_T(""))
             {
                CString strXPos =_T("");
                CString strYPos =_T("");

                strXPos.Format(_T("%d"), rect.left);
                strYPos.Format(_T("%d"), rect.top);
                WritePrivateProfileString(_T("Marker")+m_strMarkerNumber, _T("xPos"),strXPos,m_strRelatedFile);
                WritePrivateProfileString(_T("Marker")+m_strMarkerNumber, _T("yPos"),strYPos,m_strRelatedFile);
             }
         }
        
        
         break;
     case WM_MOUSEMOVE :
         cursor = ::AfxGetApp()->LoadStandardCursor(IDC_ARROW);
         if(mouse_down)
         {    
        
              //finally, move the window
              MoveWindow(    pMsg->pt.x - point.x,
                  //count the relative position
                       pMsg->pt.y - point.y,
                       MainRect.Width(),
                     //if the width doesn’t change
                       MainRect.Height(),
                     //if the height doesn’t change
                       TRUE);
         }
     }
     SetCursor(cursor);
    

    return CDialog::PreTranslateMessage(pMsg);
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: