程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> VC++ >> 淺談無標題窗口的拖放

淺談無標題窗口的拖放

編輯:VC++

    從微軟的站點看到一個簡單的方法實現,不必計算RECT,不必處理鼠標消息的細節和窗口繪制,就能輕松實現沒有標題欄的窗口移動的問題,就是使用OnNcHitTest消息。

  手工增加該消息映射:

  用classwizard是無法增加該消息的,在BEGIN_MESSAGE_MAP中加入消息ON_WM_NCHITTEST(),然後在頭文件中加入


  afx_msg UINT OnNcHitTest(CPoint point);


  在實現文件中,加入LBUTTONDOWN消息函數


  void CClyzDlg::OnLButtonDown(UINT nFlags, CPoint point)
  {
  CTranDialog::OnLButtonDown(nFlags, point);//把CTranDialog改成你的基類
  PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
  }

  加入NCHITTEST消息函數


  UINT CClyzDlg::OnNcHitTest(CPoint point)
  {
  UINT nHitTest = CTranDialog::OnNcHitTest( point );//把CTranDialog改成你的基類
  return (nHitTest == HTCLIENT) ? HTCAPTION : nHitTest;
  }

  編譯運行,沒有出錯就完成了,前後不到十行代碼。

  我用基於對話框的應用程序,在vc6.0,winnt4.0下編譯,運行良好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved