如何拖动无标题栏的对话框(MFC)

如题所述

HTCAPTION : CDialog::OnNcHitTest(pt); } BEGIN_MESSAGE_MAP(CNchittestDlg, CDialog) //{{AFX_MSG_MAP(CNchittestDlg) ....... ON_WM_NCHITTEST() //}}AFX_MSG_MAP END_MESSAGE_MAP()----------------------------------------------------在标题栏里拖动窗口的原理: Windows 首先确定鼠标点中了那个窗口,然后向那个窗口发送一个 WM_NCHITTEST 消息找出此窗口的哪个“非客户区”(如边界、最大化/最小化按钮、菜单、标题等等)拥有鼠标光标。接着默认的窗口过程响应消息并返回一个特定的代码。如果鼠标指针落在标题栏中,那么这个神奇的特定代码就是 HTCAPTIONA。如果 WM_NCHITTEST 返回 HTCAPTION,那么 Windows 便进入拖拽模式,以便对窗口进行移动操作。所以要想在客户区里用鼠标拖动对话框,那么只要在客户区里模仿标题栏里的鼠标拖动行为即可。
温馨提示:内容为网友见解,仅供参考
无其他回答

如何拖动无标题栏的对话框(MFC)
所以要想在客户区里用鼠标拖动对话框,那么只要在客户区里模仿标题栏里的鼠标拖动行为即可。

MFC中无边框窗口的拖动 怎么添加WM_NCLBUTTONDOWN消息映射
2005及以上版本的话,在Dlg类上点右键,属性,看跳出的窗口,在上面的一排工具栏图标中点第4个“事件”,然后里面有各种消息,选择你要的消息,添加即可。关于无标题栏窗口的移动的代码,确实如楼主所述的方法,一般我也是这么做的,但是如果是在按钮上点击,至少用Windows标准按钮控件是不行的,因为消息...

Domodal后的窗口没有在前台显示,该如何解决
创建一个MFC对话框程序后,添加代码后。Domodal后的窗口(后文叫窗口)没有在前台显示,需要在任务栏点一下才在前台显示。属性列表除了没有标题栏都是默认设置。窗口风格为去除缩放大小。属性的前台显示为true在OnInitDialog中也使用了 SetForegroundWindow();语句。结果还是未前台显示。---解决方案---c...

MFC下如何去掉对话框的标题栏
如果是VC的话,单击窗体,在窗体上空白处按鼠标右键打开菜单,选择"属性"(即properties),在选择"ctyles"选项卡,去掉"Title bar"前面的勾即可

如何查找没有标题栏的非模式对话框
EnumWindow ,然后在Callback函数中GetWindowText,如果是空的,就是你要找的。

MFC默认主菜单顶上的“无标题”如何去掉或改变?
CREATESTRUCT& cs){ cs.x=cs.y=0; \/\/置于屏幕左上角 cs.cx=GetSystemMetrics(SM_CXMAXIMIZED); \/\/最大化并显示状态栏 cs.cy=GetSystemMetrics(SM_CYMAXIMIZED);cs.style &= ~FWS_ADDTOTITLE ;\/\/防止MFC在窗口标题栏上添加文档名?return CSDIFrameWnd::PreCreateWindow(cs);} 按照上面的来 ...

MFC如何更改单个对话框的标题栏的高度?有人说用pDC->BitBlt()函数,可是...
有一种替代方案,不知道适合你的需求不,首先,你将标题栏截图下来进行处理,然后将对话框设置为无标题栏的,然后你将处理过的标题栏图片在对话框上置顶。

VC MFC中如何制作无边框窗口
如果是对话框窗口,那么最简便的办法就是在资源中将边框和标题栏设置一下就可以了,如下图:如果是其它的非对话框窗口,通常需要使用代码设置,将窗口属性中的边框去掉,大致代码如下:SetWindowLong(m_hWnd, GWL_STYLE, GetWindowLong(m_hWnd, GWL_STYLE) & ~WS_CAPTION); \/\/去标题栏SetWindowLong(m_...

C++(MFC)MESSAGEBOX加标题栏图标
USERICON;MsgPars.lpszIcon = MAKEINTRESOURCE(IDR_MAINFRAME);MsgPars.dwContextHelpId = 0;MsgPars.lpfnMsgBoxCallback = NULL;MsgPars.dwLanguageId = LANG_NEUTRAL;MessageBoxIndirect(&MsgPars);不过这里的图标是在对话框内显示的,不是标题栏图标。如果一定要加标题栏图标,自己写一个窗口类吧。

cef3嵌入win32无标题栏窗口,怎么来移动这个cef窗口
1) CefInitialize(main_args, settings, app.get());执行前要如下设置:CefSettings settings;settings.remote_debugging_port = 8088;\/\/如果不定义,则不能运行调试工具 2) m_bExternalDevTools = false; 此变量在 ClientHandler::ClientHandler()进行初始化 3)devtools_resources.pak 这个文件要...

相似回答
大家正在搜