MFC應用實例:[4]不可移動的窗體?

Tags: 實例, 窗體,

通常情況下窗體可以被移動,但是特殊情況下要使窗體不能移動。

工具/原料

Visual Studio 2010或者Visual C++6.0

方法/步驟

新建一個單文檔的MFC應用,工程命名為NoMoveWin

MFC應用實例:[4]不可移動的窗體

在菜單欄的“查看”中選擇“建立類嚮導”,彈出MFC ClassWizard。在Message Maps選項卡的Class name下拉列表框中選擇CmainFrame選項。

MFC應用實例:[4]不可移動的窗體

在Class Info選項卡的Message filter下拉列表框中選擇Windows選項。

MFC應用實例:[4]不可移動的窗體

在Message Maps選項卡的Message列表框中選擇WM_NCHITTEST選項,單擊Add Function按鈕

MFC應用實例:[4]不可移動的窗體

在新添加的函數OnNcHitTest()中寫入一下代碼:

UINT CMainFrame::OnNcHitTest(CPoint point)

{

// TODO: Add your message handler code here and/or call default

// 截獲鼠標事件

UINT returnValue = CFrameWnd::OnNcHitTest(point);

// 判斷是否在拖動窗體的工具欄

if(returnValue == HTCAPTION)

{

// 如果是拖動工具欄則截獲後不傳遞消息

return FALSE;

}

else

{

// 否則直接傳遞消息

return returnValue;

}

}

MFC應用實例:[4]不可移動的窗體

注意事項

多查看MSDN文檔,查看函數的用法

實例, 窗體,
相關問題答案