老早就想写了,不过自己的表述水平实在太差。今天实在想与大家分享一下该技巧,希望大家在编程过程中触类旁通,更加得心应手。
以下叙述是基于vs2008的。
1. TemporaryMacro 运用的基本过程:
a. 暂时关闭掉VAssisX (如果没有安装,忽略此操作),点击"VAssisX - Enable/Disable Virtual Assist X"菜单项。因为该插件会影响宏的记录和执行
b. 按下 Ctrl + shift + R ,开始记录宏,屏幕上会弹出一个小的浮悬框,指示正在记录宏
c. 开始进行键盘上的文本编辑操作,不用鼠标,需要熟悉基本的键盘操作快捷键,比如跳过一个单词(Ctrl + 箭头)、选择并跳过一个单词(Ctrl + shift + 箭头)、到行首(home) 等等
d. 再次按下Ctrl + shift + R, 停止记录宏,此时宏记录在一个叫TemporaryMacro 的宏文件中。
e. 将光标移动到适当的地方,按下Ctrl + shift + P,开始执行宏。重复此操作,直到你的编辑目标完成。
f. 点击"VAssisX - Enable/Disable Virtual Assist X"菜单项,恢复该插件的功能(如果没有安装,忽略此操作)
为了达到让大家更加深刻认识到该技巧的强大灵活性,现在举两个例子。
2. 应用举例1:类函数定义完毕后,对类函数进行实现。
我们经过思考,把类需要的接口函数都写好了,现在要实现它们,不过要把类函数实现的框架结构写出来,是很简单枯燥的工作。
当然,如果你有VAssisX的话,应该容易实现,我们这里假定你没有,就用TemporaryMacro 来快速实现吧。
a.编辑样例:
//dllpltdb.h
class DllPLTDB
{
public:
DllPLTDB();
~DllPLTDB();
bool Load(const char *Name,std::string* ErrorInfo);
void Release();
bool DllReleaseThread();
bool DllOpenConnection(const char *strConnString ,bool bReOpen, int nDbType);
};
//dllpltdb.cpp
DllPLTDB::DllPLTDB();
DllPLTDB::~DllPLTDB();
bool DllPLTDB::Load(const char *Name,std::string* ErrorInfo)
{
}
void DllPLTDB::Release()
{
}
bool DllPLTDB::DllReleaseThread()
{
}
bool DllPLTDB::DllOpenConnection(const char *strConnString ,bool bReOpen, int nDbType)
{
}
c. 编辑过程:(大家在实际操作过程中,可能会因为编辑样例的一些差别出入,会有一些操作上的差别)
一、从h文件中拷贝类函数定义的行到空白的cpp文件中。
bool Load(const char *Name,std::string* ErrorInfo);
void Release();
bool DllReleaseThread();
bool DllOpenConnection(const char *strConnString ,bool bReOpen, int nDbType);
二、将光标移动到第一行的行首,然后按下Ctrl + shift + R,启动宏录制
三、按键顺序:
Ctrl + shift +→ (选中函数类型单词前面的空白)
Delete (删除函数类型单词前面的空白)
Ctrl + → (光标跳过函数类型单词,即在函数名称单词的前面)
DllPLTDB:: (输入类前缀)
End (光标移动到行尾)
Delete (删除掉行尾的分号)
Enter (回车建立新行)
{ (输入左花括号)
Enter (回车建立新行)
Enter (回车建立新行)
Enter (回车建立新行)
Enter (回车建立新行)
↓ (按下箭头,光标到了下一个待处理行)
Home (光标移动到了下一个待处理行的行首)
四、再次按下Ctrl + shift + R,结束宏录制。效果如下:
void Release(); bool DllReleaseThread(); bool DllOpenConnection(const char *strConnString ,bool bReOpen, int nDbType);bool DllPLTDB::Load(const char *Name,std::string* ErrorInfo) { }
五、连续按下Ctrl + shift + P,执行宏,每执行一次就处理了一行函数原型