首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于窗口拖动时用DrawDragRect 画虚边框的用法请问

2012-02-04 
关于窗口拖动时用DrawDragRect 画虚边框的用法请教各位高手,最近本人做了一个程序的界面,因为这个界面是异

关于窗口拖动时用DrawDragRect 画虚边框的用法请教
各位高手,
最近本人做了一个程序的界面,因为这个界面是异形的,所以属性就是NONE的了
必须自己通过处理实现拉伸,并希望其拉伸的时候呈现放大缩小的虚框效果。

现在,拉伸效果已经实现,但是,点击鼠标拖拉的时候,虚框的位置就是不对
而且,当松开鼠标后,虚框的线条无法自动擦除……

本人目前用如下代码,但无奈效果不佳:

C/C++ code
//如下,此函数当鼠标点击按下时候进行调用,//但是虚框的位置不对……//至于松开的时候如何去除虚框本人还不明确void CTestDlg::DrawMoveRect(int xx1,int yy1){    HDC hDC;    hDC = ::GetDC(NULL); //取得全屏幕设备描述句柄    CDC * pDC = CDC::FromHandle(hDC);    CRect rtClient;        GetWindowRect(&rtClient);    //rtClient.left = xx1;    //rtClient.right= rtClient.left+ rtClient.Width();//宽度是 200    //rtClient.top  = yy1;    //rtClient.bottom=rtClient.top + rtClient.Height();     if (pDC)    {        int oldrop;        oldrop = pDC->SetROP2(R2_XORPEN);        pDC->DrawDragRect(rtClient, CSize(1,1), m_oldRect, CSize(1,1)); //size 是 边框的宽        pDC->SetROP2(oldrop); //恢复原来作图方式    }    m_oldRect.CopyRect(rtClient);    ::ReleaseDC(NULL, hDC);} 

哪位比较熟悉虚框画法的,还请赐教!

[解决办法]
GetWindowRect获取的是屏幕坐标,需要ScreenToClient转成窗口客户区坐标。
拖动时先在上次的位置再画一次就擦除了,然后再在新位置上画。
[解决办法]
你是不是可以考虑用一个辅助的窗口
当拖动的时候显示这个窗口
而这个窗口就是一个镂空的用来显示虚框的窗口
这样你想画成什么样都可以
而且比较好控制

一家之言,即供参考
[解决办法]
探讨
楼上说的是

但是目前的情况是,
我对DrawDragRect这个函数内各个参数变量相对位置不了解, 能否给点关于这个函数的具体说明和举例?

热点排行