[ATL] Cum deplasez un dialog cu mouse-ul?

Despre MFC, ATL si alte biblioteci C++ de la Microsoft (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[ATL] Cum deplasez un dialog cu mouse-ul?

Post by Ovidiu Cucu » 10 May 2010, 16:52

Intrebare
Cum deplasez un dialog tragandu-l cu mouse-ul din orice punct al lui?
De obicei este necesar atunci cand dialogul nu are bara de titlu.

Raspuns
In handlerul mesajului WM_NCHITTEST se trimite mai intai mesajul la DefWindowProc.
Daca valoarea intoarsa de DefWindowProc este HTCLIENT intoarcem in loc HTCAPTION.

Code: Select all

LRESULT CMyDlg::OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
   // call DefWindowProc to get the hittest point
   LRESULT lRet = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam);

   // if it's in client area, return HTCAPTION
   if(HTCLIENT == lRet)
   {
      lRet = HTCAPTION;
   }

   bHandled = TRUE;
   return lRet;
}

Vezi si



Post Reply