MFC禁止改變窗口大小和移動窗口


一、禁止對話框的移動

(1)、第一種方法 為這個對話框添加系統消息過慮處理: .h中:

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

... .cpp中

BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)

... ON_WM_SYSCOMMAND()

... END_MESSAGE_MAP()

void CXXXDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

   if (nID == SC_MOVE || nID==0xF012)

     return;

  else

   CDialog::OnSysCommand(nID, lParam);

}

SC_MOVE就是0xF010。

參考帖子:http://topic.csdn.net/t/20020821/12/957952.html

(2)、第二種方法 .h中: ...

afx_msg UINT OnNcHitTest(CPoint point);

... .cpp中

BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)

... ON_WM_NCHITTEST()

... END_MESSAGE_MAP()

UINT CXXXDlg::OnNcHitTest(CPoint point)

{

   int ret = CDialog::OnNcHitTest(point);

   if( HTCAPTION == ret)

     return HTCLIENT;

  return ret;

}

二、禁止對話框改變大小 .h中:

... afx_msg UINT OnNcHitTest(CPoint point);

... .cpp中 BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)

... ON_WM_NCHITTEST()

... END_MESSAGE_MAP()

UINT CXXXDlg::OnNcHitTest(CPoint point)

{

  int ret = CDialog::OnNcHitTest(point);

   //if語句的前兩行是用來禁止改變大小的,最后一行是用來禁止移動的

   if(HTTOP == ret || HTBOTTOM == ret || HTLEFT == ret || HTRIGHT == ret || HTBOTTOMLEFT == ret || HTBOTTOMRIGHT == ret || HTTOPLEFT == ret || HTTOPRIGHT == ret || HTCAPTION == ret)

   return HTCLIENT;

return ret;

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM