您的位置:首页 > 其它

【界面】VC 6 MFC让窗口轻而易举变漂亮

2013-10-26 21:48 471 查看
一、界面分析

         主要是把数据放到合适的位置,并且获取窗口的pDC,用pDC—>StretchBlt()函数显示图片,这里面创建了一个兼容的dc,先把数据选择到这里面,再用StrtchBlt()拷贝兼容dc。

         最后是一个一个数据块进行显示。

二、交互分析

         DLG对话框中,响应WM_NCMOUSEMOVE消息、WM_NCLBUTTONDOWN消息

//WM_NCMOUSEMOVE消息
OnNcMouseMove(nHitTest, point);
{
CRect tempIni,tempMin,tempMax,tempClose,ClientRect;//分别是初始化按钮、最小化按钮、最大化按钮、关闭按钮、客户区
temMin.CopyRect()//拷贝进temMin中
GetWindowRect(ClientRect);
if(tempMin.PtInRect(point)))//鼠标在最小化按钮移动时,则绘制另外一幅
}
//处理WM_NCLBUTTONDOWN消息
OnNcLButtonDown(nHitTest, point)
{
switch(m_ButtonState)//在MouseMove消息时有记录,
{
case bsClose: //关闭窗口
case bsIni:   //还原窗口到初始大小和位置
case bsMin:   //最小化
case bsMax:   //最大化
case bsRes:   //还原
//以上都是调用MoveWindow()、SetWindowPos()、ShowWindow()之类的
}

}

三、数据分析

StretchBlt(HDC hdcDest, int x , int y , int width , int height)
//x坐标,--->   y坐标,向下, 宽度 , 高度
CRect(int l,int t,int r,int b); //具体含义是left , top , right , bottom
tempMin.CopyRect(CRect(m_MinRect.left+ ClientRect.left,//一般为m_MinRect
ClientRect.top+m_MinRect.top,//一般为m_MinRect.top
m_MinRect.right+m_MinRect.left+ ClientRect.left,//一般为m_MinRect.left(左)+m_MinRect.right(此为宽)+0
m_MinRect.bottom+m_MinRect.top+ClientRect.top)//同上
);

四、总结

       主要是在非客户区,mousemove消息判断是否在上面,在上面的,就加载过另外一幅图片,当然移开的时候,没有做处理,这是一个没做好的地方。

       还有就是响应NCLeftButtonDown消息,做相应的处理。

参考:1、VC 6 MFC让窗口轻而易举变漂亮

2、VC++自绘窗体界面

3、VC知识库—让窗口轻而易举变漂亮

4、改变CListCtrl、CHeaderCtrl高度、字体、颜色和背景

5、CRect的用法

6、MFC窗口美化知识

7、自会边框 界面开发
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: