1、新建一个单文档的MFC应用,工程命名为NoMoveWin
![MFC应用实例:[4]不可移动的窗体](https://exp-picture.cdn.bcebos.com/65ba880b31210561bd58a45a08aee8d7582a6a53.jpg)
2、在菜单栏的“查看”中选择“建立类向导”,弹出MFC ClassWizard。在Message Maps选项卡的Class name下拉列表框中选择CmainFrame选项。
![MFC应用实例:[4]不可移动的窗体](https://exp-picture.cdn.bcebos.com/82eff6d7592ae3ef5f83e58254b6326c56666453.jpg)
3、在Class Info选项卡的Message filter下拉列表框中选择Windows选项。
![MFC应用实例:[4]不可移动的窗体](https://exp-picture.cdn.bcebos.com/1570c1b6326c57665d34f3e0a4632385e1366153.jpg)
4、在Message Maps选项卡的Message列表框中选择WM_NCHITTEST选项,单击Add Function按钮
![MFC应用实例:[4]不可移动的窗体](https://exp-picture.cdn.bcebos.com/2e223d85e036e2918d13c253b2723d03baea5b53.jpg)
5、在新添加的函数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]不可移动的窗体](https://exp-picture.cdn.bcebos.com/32a127723d03bbeaf17dc1fbea43d7d449315453.jpg)