下面的代码中, DC的画图坐标是屏幕坐标。当鼠标 按下,移动 时绘制的拖拽splitter是直接在屏幕上绘制的,坐标也是屏幕坐标。
其中涉及到画笔的异或操作,下面是测试代码:
CRect lrect;
lrect.left = lrect.top = 0;
lrect.right = lrect.bottom = 100;
CPen lPen(0, 5, RGB(255,0,0));
CPen *loPen = dc.SelectObject( &lPen );
// 设置画笔的异或操作
int loOop2= dc.SetROP2(R2_NOTXORPEN);
// ResultColr = OrigColr^CurPenColr;
// 结果颜色为:原象素 异或 当前画笔颜色
dc.MoveTo(0,0);
dc.LineTo(100, 100);
Sleep(1000);
//恢复原象素
dc.MoveTo(0,0);
dc.LineTo(100, 100);
dc.SetROP2(loOop2);
dc.SelectObject(loPen);
核心代码如下:
鼠标按下:
光标移动的操作:
鼠标释放:
父窗口接收到splitter 改变通知: