Dialog verschieben ohne Titelleist + ContextMenu`?
-
Hallo,
ich verwende diese code um den dialog ohne titelleiste zu verschieben:UINT CTestDlg::OnNcHitTest(CPoint point) { // TODO: Add your message handler code here and/or call default UINT nHitTest = CDialog::OnNcHitTest(point); if ((nHitTest == HTCLIENT) || (nHitTest == HTBORDER)) { nHitTest = HTCAPTION; } return nHitTest; }
aber seit dem funktioniert das context menü nicht mehr, was muss ich einstellen damit es wieder geht?
danke
-
So hatte ich das immer gemacht. Hat auch noch den Vorteil das in der Titelleiste das normale Windows-Kontextmenü angezeigt wird statt dem Eigenem.
// lastHT ist eine Membervariable der Klasse UINT CTest123Dlg::OnNcHitTest(CPoint point) { lastHT = CDialog::OnNcHitTest(point); return lastHT == HTCLIENT ? HTCAPTION : lastHT; } void CTest123Dlg::OnNcRButtonUp(UINT nHitTest, CPoint point) { if(lastHT == HTCLIENT) SendMessage(WM_CONTEXTMENU,0,MAKELONG(point.x,point.y)); else CDialog::OnNcRButtonUp(nHitTest, point); } void CTest123Dlg::OnContextMenu(CWnd* pWnd, CPoint point) { if(lastHT != HTCLIENT) { CDialog::OnContextMenu(pWnd,point); return; } // dein Kontextmenü... }
-
danke,
ich habe noch eine etwas kürzere methode gefunden:UINT CTestDlg::OnNcHitTest(CPoint point) { UINT nHitTest = CDialog::OnNcHitTest(point); if (GetAsyncKeyState(VK_LBUTTON)) { nHitTest = HTCAPTION; } return nHitTest; }
-
Ist mal jemand so nett und schiebt das in die FAQ?