对话框有标题栏,怎么禁止鼠标拖动窗口 对话框有标题栏,不能去掉,也不能全屏。怎么禁止鼠标拖动窗口? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 处理OnNcHitTest函数, 写上 return HTCLIENT; 在WM_HITTEST对应的消息处理函数OnNcHitTest中直接返回TRUE, 或者当指向对话框标题栏时,返回客户区的值HTCLIENTUINT CXXXDlg::OnNcHitTest(CPoint point) { // TODO: Add your message handler code here and/or call default return HTCLIENT;} 我添加了这个消息函数OnNcHitTest,怎么提示error C3861: “ON_WM_NCHITTEST”: 找不到标识符。 做的是属性表单,class CSheetP : public CPropertySheet class CPageOne : public CPropertyPage class CPageTWO : public CPropertyPage应该在哪个中添加消息函数? 你应该响应主对话框的 OnNcHitTest, 而不是属性页。 奇怪了,在主对话框中添加消息OnNcHitTest响应函数,还是提示错误1>------ 已启动生成: 项目: test, 配置: Debug Pocket PC 2003 (ARMV4) ------1>正在编译...1>testDlg.cpp1>.\testDlg.cpp(33) : error C3861: “ON_WM_NCHITTEST”: 找不到标识符1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“}”(在“{”的前面)1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)1>.\testDlg.cpp(34) : error C2653: “TheBaseClass”: 不是类或命名空间名称1>.\testDlg.cpp(34) : error C2065: “GetThisMessageMap”: 未声明的标识符1>.\testDlg.cpp(34) : error C2065: “_messageEntries”: 未声明的标识符1>.\testDlg.cpp(34) : error C2059: 语法错误 : “return”1>.\testDlg.cpp(34) : error C2059: 语法错误 : “}”1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)1>.\testDlg.cpp(34) : error C2059: 语法错误 : “}”1>.\testDlg.cpp(40) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)1>.\testDlg.cpp(40) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)1>.\testDlg.cpp(87) : error C2039: “OnNcHitTest”: 不是“CDialog”的成员1> C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include\afxwin.h(3425) : 参见“CDialog”的声明1>生成日志保存在“file://d:\练习\test\test\Pocket PC 2003 (ARMV4)\Debug\BuildLog.htm”1>test - 14 个错误,0 个警告========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== 难道Pocket PC 2003 不兼容 晕死,楼主位提到过PPC吗?如果是PPC,不支持我提到的方法。 不要意思啊,没说清楚。如果是PPC的话那应该怎么做? 在对话框初始化时加上ModifyStyleEx(0, WS_EX_NODRAG, 0);即可。 哈哈,何止是Pocket PC 2003,Windows Mobile 6也不支持:)我之前也曾想用WM_NCHITTEST,可惜没有~~~ 难道是PPC的问题?我用WinCE,是不会出现这个问题的。 不知道怎么能让任务栏对话框一直在下面显示,难道先全屏再用::SetWindowPos把任务栏显示出来 我没有模拟器,估计你隐藏了系统任务栏,调用全屏时系统API不会减去系统任务栏的高度,自己MoveWindow,计算长宽高。 PPC新建窗口是默认全屏吧,你改变这个默认行为,然后自己改变窗口大小。 你仔细看下MSDN中的ModifyStyleEx。应该是可以的,我没法测试。关键是这个nFlagsFlags to be passed to SetWindowPos, or zero if SetWindowPos should not be called. The default is zero. See the Res section for a list of preset flags.你试试,我也想知道结果。 在对话框的OnCreate中调用ModifyStyleEx 可以了,我这样做,窗口既有标题栏,也不能移动 ModifyStyleEx(0, WS_EX_NODRAG,0); ::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,240,293,SWP_SHOWWINDOW); 首先要用WM_NCHITTEST的Message然后修改LRESULT CXXDlg::OnNcHitTest(CPoint point)函数,具体修改成如下:LRESULT CXXDlg::OnNcHitTest(CPoint point){ // TODO: Add your message handler code here and/or call default if((CDialogEx::OnNcHitTest(point))==2) { return 0; } else { return CDialogEx::OnNcHitTest(point); }}我试过,这样就可以,如果还不行,请回复我,我在帮你试试。 给一个CString变量赋值出现错误 png格式的图片如何相加 问个菜问题,有关OnPaint 关于网页中activex控件的问题? 如何按顺序得到一串的ascii码 请问如何建立一个浮动式菜单 谈谈pipe都可以用在什么样的环境中? 网络流量和带宽的比例关系,能否讲讲? 使用OLE2T将BSTR转换成LPTSTR时出现的问题 高手救命!! 关于IWebBrowser2接口的Navigate函数 暂停线程,SuspendThread和WaitForSingleObject+Event哪个好!!!
UINT CXXXDlg::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default
return HTCLIENT;
}
class CPageOne : public CPropertyPage
class CPageTWO : public CPropertyPage
应该在哪个中添加消息函数?
你应该响应主对话框的 OnNcHitTest, 而不是属性页。
1>------ 已启动生成: 项目: test, 配置: Debug Pocket PC 2003 (ARMV4) ------
1>正在编译...
1>testDlg.cpp
1>.\testDlg.cpp(33) : error C3861: “ON_WM_NCHITTEST”: 找不到标识符
1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“}”(在“{”的前面)
1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>.\testDlg.cpp(34) : error C2653: “TheBaseClass”: 不是类或命名空间名称
1>.\testDlg.cpp(34) : error C2065: “GetThisMessageMap”: 未声明的标识符
1>.\testDlg.cpp(34) : error C2065: “_messageEntries”: 未声明的标识符
1>.\testDlg.cpp(34) : error C2059: 语法错误 : “return”
1>.\testDlg.cpp(34) : error C2059: 语法错误 : “}”
1>.\testDlg.cpp(34) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)
1>.\testDlg.cpp(34) : error C2059: 语法错误 : “}”
1>.\testDlg.cpp(40) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
1>.\testDlg.cpp(40) : error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
1>.\testDlg.cpp(87) : error C2039: “OnNcHitTest”: 不是“CDialog”的成员
1> C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\atlmfc\include\afxwin.h(3425) : 参见“CDialog”的声明
1>生成日志保存在“file://d:\练习\test\test\Pocket PC 2003 (ARMV4)\Debug\BuildLog.htm”
1>test - 14 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
难道是PPC的问题?我用WinCE,是不会出现这个问题的。
nFlags
Flags to be passed to SetWindowPos, or zero if SetWindowPos should not be called. The default is zero. See the Res section for a list of preset flags.你试试,我也想知道结果。
ModifyStyleEx(0, WS_EX_NODRAG,0);
::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,240,293,SWP_SHOWWINDOW);
然后修改LRESULT CXXDlg::OnNcHitTest(CPoint point)函数,具体修改成如下:
LRESULT CXXDlg::OnNcHitTest(CPoint point)
{
// TODO: Add your message handler code here and/or call default
if((CDialogEx::OnNcHitTest(point))==2)
{
return 0;
}
else {
return CDialogEx::OnNcHitTest(point);
}
}
我试过,这样就可以,如果还不行,请回复我,我在帮你试试。