MFC实现弹出窗口以及拖动无标题框窗口

语言: VC++, IDE: VS2017

本例中,以点击按钮弹出窗口为示例

一、实现弹出对话框窗口
1.主对话框中增加按钮“弹出窗口”,ID命名为IDC_BTN_OPEN_DLG,添加类型为BN_CLICKED的事件处理程序OnBnClickedBtnOpenDlg,

2.资源视图中添加一个Dialog,ID为IDD_DLG_POP,作为弹出窗口,标题框可能是不需要的,可在属性中将Border先设置为None,然后设置为Thin,根据需要做下调整,例如:
MFC实现弹出窗口以及拖动无标题框窗口

3.为这个窗口添加类,命名为CPopDlg,

4.在OnBnClickedBtnOpenDlg增加如下代码,

// #include "CPopDlg.h"

CPopDlg popDlg;
popDlg.DoModal();

运行效果:
MFC实现弹出窗口以及拖动无标题框窗口

二、实现拖动无标题框窗口
上面的弹出窗口,由于属性的Border为None->Thin,无法使用鼠标拖动,可通过如下方式实现可拖动,

在类视图中,为CPopDlg类添加消息WM_LBUTTONDOWN响应OnLButtonDown,并添加如下代码即可,

PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y));