类似画笔的绘图控件
2008-02-26 20:26:53 来源:WEB开发网核心提示:四、 打开和保存有了前面的基础,着部分比较容易实现,类似画笔的绘图控件(2),打开文件的主要函数是:HBITMAPhbmp = (HBITMAP)LoadImage(NULL, _T(path), IMAGE_BITMAP,0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_
四、 打开和保存
有了前面的基础,着部分比较容易实现。
打开文件的主要函数是:
HBITMAP hbmp = (HBITMAP)LoadImage(NULL, _T(path), IMAGE_BITMAP,
0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);
pDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dc, 0, 0, SRCCOPY);
具体实现过程请参考源代码。
以上是MFC程序的实现过程,接下来我们把它转化成控件。
五、转化成控件
1、新建控件
启动Microsoft Visual C++ 6.0,单击File下拉菜单下的New命令,在Profects标签下选择MFC ActiveX ControlWizard。输入工程名WinPainter;
2、引入ActivDoc.h和ActivDoc.cpp文件;
3、在CwinPainterCtrl类的构造函数中添加
AddDocTemplate(new CActiveXDocTemplate(
RUNTIME_CLASS(CDemo1Doc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CDemo1View)));
4、 将刚才开发的MFC工程中的视类、文档类、框架类的头文件、实现文件,还有图元类以及Stack类的文件统统包含进来,这时各类的消息函数可以正常响应,但菜单、工具栏等资源需要重新定义;
5、 在CWinPainterCtrl类中调用视类的函数,举例:
CDemo1View* m_pView;
m_pView = (CDemo1View *)(GetFrameWnd()->GetActiveView());
ASSERT(m_pView);
m_pView->OnEditCopy();
调用MFC中其它类的函数与此类似。
6、 增加控件的属性和方法。
至此,控件开发完毕。
控件运行测试效果图如下:
参考文献: 王宏 李玉东 李罡 《Visual C++ 实战演练》 人民邮电出版社
更多精彩
赞助商链接