基于单文档程序的OCX创建方法:(OCXDoc的创建方法)
来源:互联网 发布:淘宝比价软件哪个好 编辑:程序博客网 时间:2024/06/06 11:38
基于单文档的OCX控件,应用范围是WEB发布显示工业监控软件界面
COCXDoc的建立过程:
1.建立MFC ActiveX工程 (例如:MyActiveX)
2.用CActiveXDocControl替换COleControl
3.把ActivDoc.h和ActivDoc.cpp加入工程中
4.ActivDoc.h头文件加入MyActiveXCrtl文件的头部
5.拷贝单文档视图的文件/**********(这里是指realview文件)**********/(框架文件(*frm.cpp,*frm.h),文档文件(*doc.cpp,*doc.h),视图文件(*view.cpp,*view.h),和其他.cpp和.h,注意,不包括App文件)到ActiveX工程。
6.把这些文件加入工程,在这些文件头部加入App头文件的包含,并在MyActiveXCrtl文件的头部加入这些头文件包含,如果StdAfx.h有不同,需要手工合并。
7.手工把单文档视图工程的资源文件合并到ActiveX工程的资源文件中(应该不难吧,把两个资源文件用编辑器打开,把变量,对话框,类等等全部合并,不过这是个细活,哈)。
8.把单文档视图工程的classWizard(*.clw)文件合并到ActiveX工程中(方法同上,用编辑器打开两个文件手工合并)。
9.在框架文件中加入定义:
class CActiveToolBar : public CToolBar{ LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); public: BOOL Create(CWnd* pParentWnd);};
和动作:
BOOL CActiveToolBar::Create(CWnd* pParentWnd){ if (!CToolBar::Create(pParentWnd) || !LoadToolBar(IDR_MAINFRAME)) return FALSE; SetBarStyle(GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED); return TRUE;}
LRESULT CActiveToolBar::WindowProc(UINT message, WPARAM wParam, LPARAM lParam){ MSG msg; msg.hwnd = m_hWnd; msg.message = message; msg.wParam = wParam; msg.lParam = lParam; GetCursorPos(&msg.pt); FilterToolTipMessage(&msg); return CToolBar::WindowProc(message,wParam,lParam);}
10.把框架文件中用到的sCStatusBar和CSplitterWnd删除,并把ToolBar的类型改为CActiveToolBar,
例如:
CToolBar m_ToolBar;
改为
CActiveToolBar m_ToolBar;
11.把框架文件的oncreate改为类似:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_ToolBar.Create(this)) { TRACE0("Failed to create toolbar "); return -1; } return 0;}
12.利用classWizard给控件(*ctrl)的Automation中加入成员变量 DocumentName,产生onchange动作:
void MyMiniDrawCtrl::OnDocumentNameChanged(){ GetDocTemplate()->OpenDocumentFile(m_documentName); SetModifiedFlag();}
13.同上加入Stock-BorderStyle.
14.删除控件的OnDraw动作,把构造函数改为,类似以下:
MyMiniDrawCtrl::MyMiniDrawCtrl(){ InitializeIIDs(&IID_DMyMiniDraw, &IID_DMyMiniDrawEvents); // TODO: Initialize your control's instance data here. SetInitialSize(200, 200); AddDocTemplate(new CActiveXDocTemplate( RUNTIME_CLASS(CMinidrawDoc), //改为你的文档类 RUNTIME_CLASS(CMainFrame), //改为你的框架类 RUNTIME_CLASS(CMinidrawView))); //改为你的视图类}
参考文献引用完毕
0 0
- 基于单文档程序的OCX创建方法:(OCXDoc的创建方法)
- MFC 多文档程序 手动创建新文档的方法
- 单例的创建方法
- 基于VS2005的MFC应用程序中(单文档)建立按键响应程序的方法
- 基于各种视图单文档框架的创建
- 创建单实例的两种方法
- 单例的两种创建方法
- [iOS]单例的创建方法
- iOS 创建单例的安全方法。
- iOS 创建单例的方法 dispatch_once
- iOS中 创建单例的方法
- 单例模式的简单创建 方法
- 创建单例数据库的方法
- GCD创建单例的方法
- Swift中创建单例的方法
- 2种程序创建程序的方法
- 只在OCX中创建方法
- VC 控制台程序创建hwnd的方法
- 小时转换为时间戳
- ios 模拟器中应用程序的存储路径
- Scramble String
- gdb调试手册
- 网络通信要注意的事
- 基于单文档程序的OCX创建方法:(OCXDoc的创建方法)
- NYOJ 737 石子合并(一)(区间动规)
- 在做自动化测试之前你需要知道的
- JavaScript / ECMAScript
- oracle与mysql除重删除
- Spring实例化Bean的三中方式
- UITextField小结
- jquery如何获取复选框的值
- 分层理论设计坦克大战