ATL 编程的两个 trick

ATL 编程的两个 trick
调试 dll
写一个简单的 atl 组件. 也少不了调试. 自然就需要一个程序来调用这个组件. ActiveX 控件有 ActiveX Control Test Container. 但好像不能加载普通的组件. 写一个 exe 来加载, 自然也不难. 但终究有些麻烦. 如果是支持 IDispatch 接口. 那么用脚本来调用组件是最简单的. 比如一个这样的 vbs 文件. 就可以实现调用:

'atldb.vbs
set db = CreateObject("Atldb.DB")
db.Execute("insert into [data] values(1)")

但 vc6 只支持调试 EXE, 也有办法, 指定被调试的程序为 cscript.exe, 把脚本文件作为参数. 现在 F7 编译好, 按 F5, 就可以调试啦.

shellext
这个不是原创, 是我在这里(http://www.sellsbrothers.com/tools/regsvr.reg)看到的. 以前也见过. 好像是用 dll 实现的. 还是这个简单, 一个 reg 文件, 而且比较全. 右击一个 dll, tlb, ocx, exe, olb.. 等等文件, 出现与 COM 相关的一些菜单项: reg/unreg, view in OLEVIEW.. 但有个小问题. 原版本的 View in OLEVIEW 不能用. 分析发现, 改成这样子就好了(假设你的机器里将 vc6 安装到了默认路径):

[HKEY_CLASSES_ROOT/dllfile/shell/View in OLEVIEW/command]
@="/"C://Program Files//Microsoft Visual Studio//Common//Tools//oleview.exe/" %L"

[HKEY_CLASSES_ROOT/typelib/shell/View in OLEVIEW/command]
@="/"C://Program Files//Microsoft Visual Studio//Common//Tools//oleview.exe/" %L"

[HKEY_CLASSES_ROOT/exefile/shell/View in OLEVIEW/command]
@="/"C://Program Files//Microsoft Visual Studio//Common//Tools//oleview.exe/" %L"


改这个 reg 文件的时候, 修改/导入注册表好多次. 一直都是用 scite 的. scite 的好处尽可能的支持 F7/F5 等快捷键来编译/运行程序. 但是 F5 不支持 reg 文件. 虽然按 F5 导入 reg 文件的想法很自然. 而且 regedit.exe /s 本来也支持命令行参数. 找了一下, 发现在 other.properties 文件里加上这一句就可以了(可以加到最后).

command.go.*.reg=regedit /s $(FileNameExt)

改完一个 reg 文件后, 按 F5 就可以导入啦. 真方便.

-------------------------------------

看 other.properties 文件的时候, 偶然发现这个:

 command.name.0.*.bat=Execute Selection
 command.0.*.bat=$(CurrentSelection)

原来就是我一直想要的自定义功能键. 这里的设置是, 在编辑 bat 文件的时候, 将 ctrl + 0 设置为执行选中的文本. 第一行的作用是在 Tools 菜单下加入一个菜单项: Execute Selection.

以前看 scite 的帮助的时候好像看到过关于自定义功能键的说明. 但没有看太明白. 原来就是这个意思.:)


 

你可能感兴趣的:(ATL 编程的两个 trick)