VC拖放窗口中的控件
2014-11-21 00:42
267 查看
我一直想要自己做一个资源编辑器,要实现这个愿意,首要的任务:
1.使用RegWindowClass创建一个自己的CLASS结构,生成各个控件。
2.使用鼠标进行拖放:
拖放时,左键按下,根据当前的窗口生成一个Focus矩形,鼠标移动时更新位置,鼠标放开时,生成新的位置坐标。
这时就可以使用MoveWindow把控件调整到新的位置。
关键代码:
DrawFocusRect本身是R2_NOT绘图模式,所以不需要SetRop2进行定义。
这个功能非常的重要。今天有如神助,一次就搞定了。
离成功,还有很多的功能要实现!!!
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进行定义。
这个功能非常的重要。今天有如神助,一次就搞定了。
离成功,还有很多的功能要实现!!!
相关文章推荐
- VC,webbrowser控件中关闭网页窗口
- VC++之随父窗口变化调整控件大小 zz
- 为VC MFC 窗口添加 Flash 控件
- VC防止窗口和控件闪烁的方法
- VC,webbrowser控件中弹出新网页窗口
- VC MFC 让窗口、控件随着主窗口大小改变而改变
- VC++之随父窗口变化调整控件大小
- VC防止窗口和控件闪烁的方法
- VC/MFC 拖放树形控件与列表控件的项
- VC++之随父窗口变化调整控件大小 (没有位置)
- VC中获取窗口控件相对客户区的坐标
- VC++改变窗口背景颜色和使得Static控件背景透明
- VC防止窗口和控件闪烁的方法
- VC++无标题窗口以及控件拖动的方法(修正)
- VC中调整窗口控件的TAB顺序
- VC控件随窗口最大化而变大或缩小
- VC窗口(控件)中显示指定 URL 对应图片
- VC防止窗口和控件闪烁的方法
- VC防止窗口和控件闪烁的方法
- VC小技巧一:获取窗口句柄、控件ID、DC等