CLR自定义.NET控件制作(3)——自定义视图控件
2017-04-18 14:07
387 查看
当我们想要制作一个自己的视图控件时,就在在原控件视图上贴上我们自己的View, view可以随意开发,比如你开发一个View继承自CView,可以显示图片,影像,地图等。下面就以开发一个视图控件为例。
首先,你先要在CLR工程中,添加一个纯C++ View类,例如我添加名字为MyView的类,头文件:
CPP文件实现暂且不写。
然后,在CLR工程中的MyViewControl.h文件中的类私有成员中,添加一个成员变量
CMyView* m_MyView;
打开MyViewControl.h的设计器,查看属性,找到事件Load,双击,在MyViewControl.h代码文件中添加如下代码;
运行生成,则视图创建成功。
再在设计器中响应sizeChanged事件,使得控件在Form窗体上,可以随意改变大小和拖动。
运行生成,则简单的视图控件创建成功。
首先,你先要在CLR工程中,添加一个纯C++ View类,例如我添加名字为MyView的类,头文件:
1 #pragma once 2 private class CMyView : public CView 3 { 4 public: 5 CMyView (); 6 virtual ~ CMyView (); 7 DECLARE_DYNCREATE(CMyView) 8 public: 9 afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 10 afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 11 afx_msg void OnRButtonUp(UINT nFlags, CPoint point); 12 afx_msg void OnRButtonDown(UINT nFlags, CPoint point); 13 afx_msg void OnMouseMove(UINT nFlags, CPoint point); 14 afx_msg void OnContextMenu(CWnd* pWnd, CPoint point); 15 afx_msg void OnMButtonDown(UINT nFlags,CPoint point); 16 public: 17 BOOL m_DesignMode; 18 HWND m_ParentHwnd; 19 ToolCallbackNative * m_pCallBack; 20 21 protected: 22 DECLARE_MESSAGE_MAP() 23 };
CPP文件实现暂且不写。
然后,在CLR工程中的MyViewControl.h文件中的类私有成员中,添加一个成员变量
CMyView* m_MyView;
打开MyViewControl.h的设计器,查看属性,找到事件Load,双击,在MyViewControl.h代码文件中添加如下代码;
1 System::Void MyViewControl:: MyViewControl _Load(System::Object^ sender, System::EventArgs^ e) 2 { 3 IntPtr ptr = this->Handle; //得到当前句柄 4 Void * pWnd = ptr.ToPointer(); 5 RECT rc; 6 ::GetWindowRect((HWND)(int)this->Handle, &rc); //得到窗体的大小 7 rc.right -= rc.left; 8 rc.bottom -= rc.top; 9 rc.top = rc.left = 0; 10 11 if (!m_MyView->Create(0, 0, WS_VISIBLE|WS_CHILD, rc, CWnd::FromHandle((HWND)(int)this->Handle), 100)) 12 { 13 LONG e = GetLastError(); 14 delete m_MyView; 15 m_MyView = 0; 16 } 17 //得到父窗口句柄 18 m_MyView->m_ParentHwnd = (HWND)(int)this->Handle; 19 20 }
运行生成,则视图创建成功。
再在设计器中响应sizeChanged事件,使得控件在Form窗体上,可以随意改变大小和拖动。
1 System::Void MyViewControl:: MyViewControl _SizeChanged(System::Object^ sender, System::EventArgs^ e) 2 { 3 RECT rc; 4 ::GetWindowRect((HWND)(int)this->Handle, &rc); 5 rc.right -= rc.left; 6 rc.bottom -= rc.top; 7 rc.top = rc.left = 0; 8 if(m_MyView) 9 { 10 int cx, cy; 11 cx = rc.right - rc.left; 12 cy = rc.bottom - rc.top; 13 ::SetWindowPos(m_MyView ->m_hWnd, NULL, 0, 14 0, cx, cy, SWP_NOZORDER | SWP_NOACTIVATE); 15 } 16 }
运行生成,则简单的视图控件创建成功。
相关文章推荐
- asp.net控件开发基础(11) --------自定义视图状态管理
- 制作自定义WmlListAdapter来实现Mobile.List控件的各种效果
- 水印控件windows phone中,制作一个自定义的密码输入框控件,含图片,有水印,星号显示
- 【自定义视图控件】实战篇--支持滑动和动画的开关按钮(SwitcheButton)
- 【自定义视图控件】入门篇----继承View以及主要的函数
- 如何在ASP.NET中制作Web用户自定义控件,并在aspx页面中使用它的方法和属性?
- 自定义视图窗口控件
- Android 自定义视图容器控件拦截ontouch事件传递给其子控件
- iOS 自定义选项卡控件(TabBar)的制作思路
- 初识Android自定义控件之圆形百分比图表的制作
- [Wap] 制作自定义WmlListAdapter来实现Mobile.List控件的各种效果
- Delphi 制作自定义数据感知控件并装入包(dpk文件)中(与DBText类似的数据感知控件)
- [Wap] 制作自定义WmlListAdapter来实现Mobile.List控件的各种效果
- 控件视图Android 自定义视图容器控件拦截ontouch事件传递给其子控件
- C#.Net用户自定义控件制作教程
- 在 ASP.NET2.0 下制作自定义可视控件
- 自定义服务器控件开发(3)--视图状态与控件状态
- wpf日历控件制作过程分析(2)---自定义样式属性
- android 自定义视图控件开发
- 初识Android自定义控件之旋转罗盘的制作