⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 05.1.2 创建图形插入符.txt

📁 网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读
💻 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 + -