插件编写傻瓜教程>>VC6.0

>>写在前面
本教程主要讲解如何用按键精灵自带的模版编写插件.
请大家在教程没全部写完之前不要跟贴,谢谢合作!
需要的工具:VC6.0 编辑语言:C++

>>初步接触
1.安装VC6.0(建议不要使用创天的汉化版)

2.解压插件自带的模版,解压后选择QMPlugin.dsw文件,打开工程.进入VC编辑界面.

3.选择FileViewx选项卡,再选择QMPlugin.cpp.(参照map1图中红圈位置)
此时,编辑区域显示的是QMPlugin.cpp文件的内容.

4.请看下面的组图中的红圈部分
红圈1-4的内容都是QMPlugin.cpp的内容
红圈1: 定义头文件部分
在此打个简单的比喻!我们把插件看做一个机器装配工厂,插件中需要调用的函数看做是装配零件.
插件这个工厂要装配不同的机器必须用到不同的装配零件.为了方便工作,我们人为地把汽车零件放在一个仓库,
把轮船零件放在一个仓库.类推.在这里,定义头文件就相当于在组装一台机器前告诉工厂,
我们组装这台机器需要去哪些仓库拿零件.下面程序中用到的函数必须在头文件指示的仓库里.

这里还要提一下,仓库可以存在包含关系,比如A仓库可以包含B.C2个小仓库,
如果我们要取B仓库中的零件,只要指明A仓库或者B仓库任意一个就可以了.
详细的头文件包含关系可以参阅MSDN(当然自己也可以定义头文件,本文主要是写给一些初学者,在此略过)

红圈2: 编辑按键精灵脚本时显示的本插件的名称注释
修改这里的字符串可以改变本插件显示的名称

红圈3: 定义功能的函数
红圈部分是一个函数,一个函数对应着一条插件命令.
int Test1Handler(char *lpszParamList, char *lpszRetVal)
int表示函数的返回值是一个整型
Test1Handler是本函数的名称
(char *lpszParamList, char *lpszRetVal)是函数的2个参数
char表示这2个参数都是字符型,*是指针运算符,char *说明这2个参数是字符型指针
在C/C++中可以把字符型指针看做是字符型数组,简单的也可以理解成字符串.
lpszParamList是命令需要的参数,lpszRetVal是返回值参数

char lpszParam1[1024] = {0}, lpszParam2[1024] = {0}; 
ParseParam(lpszParamList,lpszParam1,lpszParam2);
如果该函数对应的插件命令参数大于1个,我们则需要这2句
这2句是把命令需要的参数分解,我们在使用插件的时候写进的命令参数是XXX,XXXX,XXXX的形式的.
XXX,XXXX,XXXX被看做是一个参数传递给插件中的函数.因此我们需要ParseParam函数来分解,
分解的过程是以逗号为分割线,去掉逗号,把一个参数分成几个参数的过程.
上面例子2句是分解成2个参数lpszParam1,lpszParam2.分解后的参数仍是字符串型.
(提一下ParseParam函数是在ExtFunc.cpp中被定义的)

char lpszShowMessage[4096];
sprintf(lpszShowMessage,"Param1 = %s\nParam2 = %s",lpszParam1,lpszParam2);
MessageBox(0,lpszShowMessage,"This is plugin command Test1",0);
这3句是函数过程,这里的sprintf函数就是被定义在"stdio.h"中的

return 1;
C/C++语言的函数除了函数是void型外都必须有返回值,
如果你的函数不需要返回值,也要写return这句,至于返回什么可以任意.
上面定义了函数返回类型是int,这里只要写任意一个整数就可以了.

红圈4: 本插件在编辑按键精灵脚本时的命令,以及注释部分
"Test1","测试1",Test1Handler,
"Test2","测试2",Test2Handler,
知道这是一个结构体就可以了.这个结构体有3个部分,每个部分的逗号都不可以省略.
3个逗号以及这3个逗号之前的字符表示一条插件命令,6.1的则是4个逗号
"Test1"是完成后插件的命令名,与Test1Handler对应
"测试1"是注释内容,Test1Handler是上面定义的函数,与"Test1"对应
如果这里你不想写注释可以这样写"Test1",,Test1Handler,
注:6.0和6.1的模版不同之处,6.1此处多了1个部分,表示该命令有几个命令参数
"Test1","测试1",Test1Handler,2,

现在接触电脑时间越来越少,估计这篇教程要慢慢完成了.预计2.3天才能完成一节.
还有对一些论坛短消息没有回复,敬请大家谅解.
下个章节会讲一些C++函数类型转换的相关知识.

[ 本帖最后由 沉8 于 2007-3-16 12:22 PM 编辑 ]

1.jpg (162.66 KB)

 

map1

2.jpg (165.33 KB)

 

map2

3.jpg (153.51 KB)

 

map3

转载于:https://www.cnblogs.com/rogee/archive/2010/11/30/1892448.html

你可能感兴趣的:(插件编写傻瓜教程>>VC6.0)