当前位置:C++技术网 > 资讯 > MFC创建无边框并能拖动的心形对话框

MFC创建无边框并能拖动的心形对话框

更新时间:2016-01-14 17:30:48浏览次数:1+次

在客户区拖动窗口(拖动无边框窗口)两种实现方法及原理分析》《创建不规则窗口-心形窗口》《窗口背景颜色和背景图片的设置

三篇文章都有了详细的讲述,在这里我就是简单地实现出来:
顺便详细列出的鼠标击中测试枚举值
HTBORDER 在不具有可变大小边框的窗口的边框上。
· HTBOTTOM 在窗口的水平边框的底部。
· HTBOTTOMLEFT 在窗口边框的左下角。
· HTBOTTOMRIGHT 在窗口边框的右下角。
· HTCAPTION 在标题条中。
· HTCLIENT 在客户区中。
· HTERROR 在屏幕背景或窗口之间的分隔线上(与HTNOWHERE相同,除了Windows的DefWndProc函数产生一个系统响声以指明错误)。
· HTGROWBOX 在尺寸框中。
· HTHSCROLL 在水平滚动条上。
· HTLEFT 在窗口的左边框上。
· HTMAXBUTTON 在最大化按钮上。
· HTMENU 在菜单区域。
· HTMINBUTTON 在最小化按钮上。
· HTNOWHERE 在屏幕背景或窗口之间的分隔线上。
· HTREDUCE 在最小化按钮上。
· HTRIGHT 在窗口的右边框上。
· HTSIZE 在尺寸框中。(与HTGROWBOX相同)
· HTSYSMENU 在控制菜单或子窗口的关闭按钮上。
· HTTOP 在窗口水平边框的上方。
· HTTOPLEFT 在窗口边框的左上角。
· HTTOPRIGHT 在窗口边框的右上角。
· HTTRANSPARENT 在一个被其它窗口覆盖的窗口中。
· HTVSCROLL 在垂直滚动条中。
· HTZOOM 在最大化按钮上。
代码实现:



代码:

int C心形对话框Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialogEx::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:  在此添加您专用的创建代码
	strImg=_T("D:\\1.jpg");
	img.Load(strImg);
	hBitmap=(HBITMAP)img;
	this->SetBackgroundImage(hBitmap);
	return 0;
}


LRESULT C心形对话框Dlg::OnNcHitTest(CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	UINT nHitTest=CDialogEx::OnNcHitTest(point);
	if(nHitTest==HTCLIENT)
	{
		nHitTest=HTCAPTION;
	}
	return nHitTest;
}