请教高手,我怎么才能达到用鼠标摁住窗体的任意部分,移动此窗体? 请教高手,我怎么才能达到用鼠标摁住窗体的任意部分,移动此窗体?就像用鼠标摁住标题栏那样,移动窗体! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载UINT CDlg::OnNcHitTest(CPoint point){ if(CWnd::OnNcHitTest(point)==HTCLIENT&&(::GetAsyncKeyState(MK_LBUTTON)<0)) return HTCAPTION; return CWnd::OnNcHitTest(point);} 一句话搞掂:void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point) { SendMessage(WM_SYSCOMMAND,0xF012,0); //移动无标题栏对话框 CDialog::OnLButtonDown(nFlags, point);} 怎样单击窗体任何位置就可移动窗体 void CInsertStrToFileDlg::OnLButtonDown(UINT nFlags, CPoint point) {PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));CDialog::OnLButtonDown(nFlags, point);} 如何按非客户区移动窗体作者 浙江大学 王向伟下载源代码 我曾在VCKBSAE上看到一介绍如何按非客户区移动窗体,既重载WM_NCHITTEST,返回HTCAPTION。但我认为有一点不妥就是没有了鼠标右键功能。这里我介绍一种方法,即可已在客户区移动窗体又可以实现鼠标右键功能。1、新建一工程DLG。采用默认设置。2、添加消息处理函数: void CDlgDlg::OnLButtonDown(UINT nFlags, CPoint point) { PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,pointy)); CDialog::OnLButtonDown(nFlags, point);} 3、添加右键功能。已实现鼠标右键功能 void CDlgDlg::OnRButtonDown(UINT nFlags, CPoint point) { CMenu menu,*sub; menu.LoadMenu(IDR_MENU1); sub=menu.GetSubMenu(0); ClientToScreen(&point); sub->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this); CDialog::OnRButtonDown(nFlags, point);} 其它实现细节请参见源代码。 http://www.vckbase.com/document/viewdoc.asp?id=502http://www.vckbase.com/code/downcode.asp?id=1728 头文件 中添加申明UINT OnNcHitTest(CPoint pt);在消息映射中添加ON_WM_NCHITTEST()函数代码如下UINT CYourDlg::OnNcHitTest(CPoint pt){ CRect rc; GetClientRect(&rc); ClientToScreen(&rc); return rc.PtInRect(pt) ? HTCAPTION : CDialog::OnNcHitTest(pt);}--------- May you succeed! ----------------- 加上左键按下消息void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point) { CDialog::OnLButtonDown(nFlags, point);//加上下面这句话 PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));} 串口通信 我使用DrawText后如何确定rect 如何利用CStdioFile替换文本文件某一行的内容? 我在VC里面插入了BMP文件,但是执行出来看的时候是全黑的位图 如何实现类似VisualAssist的自动完成功能 请问如何在VC下选中几行代码并能快速的对齐呢? 怎么才能提高信誉分? 简单问题__新手提问__望指教 如何通过IFS驱动获得系统对文件的读写? afx.inl 122 对话框 我把纯C的代码添加到MFC里面去的时候,好象少了一些东西,出现错误! 一个挺难的问题,要是能回答的话,分数不是问题。(求一个SQL语句写法)
UINT CDlg::OnNcHitTest(CPoint point)
{
if(CWnd::OnNcHitTest(point)==HTCLIENT&&(::GetAsyncKeyState(MK_LBUTTON)<0))
return HTCAPTION; return CWnd::OnNcHitTest(point);
}
void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
SendMessage(WM_SYSCOMMAND,0xF012,0); //移动无标题栏对话框 CDialog::OnLButtonDown(nFlags, point);
}
void CInsertStrToFileDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
CDialog::OnLButtonDown(nFlags, point);
}
作者 浙江大学 王向伟
下载源代码
我曾在VCKBSAE上看到一介绍如何按非客户区移动窗体,既重载WM_NCHITTEST,返回HTCAPTION。但我认为有一点不妥就是没有了鼠标右键功能。这里我介绍一种方法,即可已在客户区移动窗体又可以实现鼠标右键功能。
1、新建一工程DLG。采用默认设置。
2、添加消息处理函数: void CDlgDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,pointy));
CDialog::OnLButtonDown(nFlags, point);
}
3、添加右键功能。已实现鼠标右键功能 void CDlgDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu menu,*sub;
menu.LoadMenu(IDR_MENU1);
sub=menu.GetSubMenu(0);
ClientToScreen(&point);
sub->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
CDialog::OnRButtonDown(nFlags, point);
}
其它实现细节请参见源代码。 http://www.vckbase.com/document/viewdoc.asp?id=502http://www.vckbase.com/code/downcode.asp?id=1728
UINT OnNcHitTest(CPoint pt);在消息映射中添加
ON_WM_NCHITTEST()函数代码如下
UINT CYourDlg::OnNcHitTest(CPoint pt)
{
CRect rc;
GetClientRect(&rc);
ClientToScreen(&rc);
return rc.PtInRect(pt) ? HTCAPTION : CDialog::OnNcHitTest(pt);
}---------
May you succeed!
-----------------
void CXXXDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
CDialog::OnLButtonDown(nFlags, point);
//加上下面这句话
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
}