📄 05.1.2 创建图形插入符.txt
字号:
5.1.2 创建图形插入符
上面创建的是一般文字处理程序所使用的文本插入符,下面将介绍如何创建图形插入符,这可以利用CWnd类的另一个函数: CreateCaret来实现。该函数的声明形式如下所示:
void CreateCaret( CBitmap食 pBitmap );
这个函数用来创建图形插入符,它有一个参数,要求是CBitmap指针类型。在使用这个函数之前,要先构造一个CBitmap对象,并利用CBitmap的成员函数初始化位图对象,之后,才能使用这个位图对象。
为了创建一个位图对象,既可以新建一个位图资源,也可以导入一个己有的位图资源。导入的方法是在 VC++开发环境窗口上选择【Insert】菜单下的【Resource..】菜单命令,在弹出如图5.4所示的插入对话框中单击【Import】按钮。
图 5.4 lnsert Resource对话框
这时会出现如图 5.5所示的导入资源对话框。在这个对话框中,从文件类型下拉列表框中选择"所有文件(*卢)"选工页,然后找到需要导入的位图文件井选中,最后单击【Import】按钮,即可实现己有位图的导入。
本例将新建一个位图,新建位图资源的方法己经在第4章介绍过了,这里不再重复。本例新建的位图资源的结果如图 5.6所示(读者可以根据自己的需要建立任意形式的位图资源,并不一定非要创建与本例一模一样的位图)。
图 5.5 Import Resource对话框图 5.6本例使用的位图资源
140 I ~~
vc忡深λ详解
例5-3就是创建图形插入符的具体实现代码。例5-3
i nt CTextView: :OnCreate(LPCREATESTRUCT lpCreateStruct)
if (CV工ew: :OnCreate(lpCreateStruct) -1) return -1 ;
CBitmap bitmap ;
bitmap .LoadBitmap(IDB_B工TMAP1 ) ;
CreateCaret(&bitmap) ;
ShowCaret() ;
return 0 ;
Build井运行Text程序,读者将会发现并非如我们所愿,程序窗口上什么也没有。这是为什么呢?我们再回顾上述例5-3所示的代码,发现这里定义的bitmap对象是一个局部变量。当 OnCreate函数执行完成之后,这个bitmap对象就要发生析构。通常,与资源相关联的对象,在其析构时都会把与之相关联的资源销毁。于是,在本例中,我们就看不到位图插入符。解决的方法就是应该将这个局部位图对象修改为CTextView类的成员变量。读者可以剪切该对象的定义代码并粘贴到CTextView类的头文件中,并将其访问权限设置为 private,结果如下所示。
prìvate:
CBitmap bitmap;
再次Build并运行Text程序,这时,我们就会在程序窗口中看到一个位图插入符。程序运行结果如图5.7所示。
|.二是I!j嚣 'ma A国
E疆
图 5.7位图插入符
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -