您的位置:首页 > 其它

VC拖放窗口中的控件

2014-11-21 00:42 267 查看
我一直想要自己做一个资源编辑器,要实现这个愿意,首要的任务:

1.使用RegWindowClass创建一个自己的CLASS结构,生成各个控件。

2.使用鼠标进行拖放:

拖放时,左键按下,根据当前的窗口生成一个Focus矩形,鼠标移动时更新位置,鼠标放开时,生成新的位置坐标。

这时就可以使用MoveWindow把控件调整到新的位置。

关键代码:

case WM_MOUSEMOVE:
{
if(wParam ==MK_LBUTTON)
{

HDC hdc = GetDC(hWnd);
SelectObject(hdc,hPen);
//清除上次
RECT rc;
SetRect(&rc,xPos,yPos,xPos+100,yPos+100);
DrawFocusRect(hdc,&rc);

//重绘新的
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);

SetRect(&rc,xPos,yPos,xPos+100,yPos+100);
DrawFocusRect(hdc,&rc);

ReleaseDC(hWnd,hdc);
}
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_LBUTTONDOWN:
{
SetCapture(hWnd);
xPos = GET_X_LPARAM(lParam);
yPos = GET_Y_LPARAM(lParam);
HDC hdc = GetDC(hWnd);
SelectObject(hdc,hBrush);
RECT rc;
SetRect(&rc,xPos,yPos,xPos+100,yPos+100);
DrawFocusRect(hdc,&rc);
ReleaseDC(hWnd,hdc);
}
break;
case WM_LBUTTONUP:
{
HDC hdc = GetDC(hWnd);
SelectObject(hdc,hBrush);
RECT rc;
SetRect(&rc,xPos,yPos,xPos+100,yPos+100);
DrawFocusRect(hdc,&rc);
ReleaseDC(hWnd,hdc);
ReleaseCapture();
}

DrawFocusRect本身是R2_NOT绘图模式,所以不需要SetRop2进行定义。

这个功能非常的重要。今天有如神助,一次就搞定了。

离成功,还有很多的功能要实现!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: