MFC相关小技巧使用记录-窗体移动

1、多文档程序运行是,默认不新建文档:在APP类的InitInstance中CCommandLineInfo cmdInfo;和 ParseCommandLine(cmdInfo);中间添加语句 cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;

2、多文档程序运行时,主窗体默认最大化:在APP类的InitInstance中将pMainFrame->ShowWindow(m_nCmdShow);替换为 pMainFrame->ShowWindow(SW_MAXIMIZE);

3、多文档程序打开或新建文档时,最大化处理:在CChildFrame::PreCreateWindow方法中添加cs.style |= WS_VISIBLE | WS_MAXIMIZE;作为第一句。

4、多文档程序中,默认打开指定文件::在APP类的InitInstance中CCommandLineInfo cmdInfo;和 ParseCommandLine(cmdInfo);中间添加语句cmdInfo.m_nShellCommand = CCommandLineInfo::FileOpen;    cmdInfo.m_strFileName = _TEXT("文件名");即可!


5、窗体的任何区域可以拖动功能

通过添加消息响应函数
afx_msg LRESULT OnNcHitTest(CPoint point);
添加宏
ON_WM_NCHITTEST()

然后, 定义OnNcHitTest的行为即可, OnNcHitTest的代码如下:

LRESULT CBaseDlg::OnNcHitTest(CPoint point)
{
  CRect rect;
  GetClientRect(rect);
  ClientToScreen(rect);

  if(rect.PtInRect(point))

  {   

    return HTCAPTION;

  }

  return CDialogEx::OnNcHitTest(point);
}

注意:CBaseDlg可以是你的窗体基类,也可以设置成你自己的窗体类,只要对应就好;LRESULT返回值在不同的VS中,返回值可能不同,有的是UINT,如果编译有问题,直接按照提示修改就行。更加简化的实现如下:

UINT CBaseDlg::OnNcHitTest(CPoint point)
{
UINT uRet = CDialogEx::OnNcHitTest(point);
if(HTCLIENT == uRet)
return HTCAPTION;
return uRet;
}

UINT CBaseDlg::OnNcHitTest(CPoint point)
{
UINT uRet = CDialogEx::OnNcHitTest(point);
return (HTCLIENT == uRet) ? HTCAPTION : uRet;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值