首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于记事簿程序和WinMain函数,看似简单。

2013-01-01 
关于记事本程序和WinMain函数,看似简单。。。我想用自编的记事本程序打开自定义的文本文件(比如.abc)。我双击

关于记事本程序和WinMain函数,看似简单。。。
我想用自编的记事本程序打开自定义的文本文件(比如.abc)。
我双击自定义的文本文件(比如.abc)后,这个自编的记事本是启动了,但怎么不能读取和显示里面的文字内容呢??
非要用菜单里的打开对话框才行。。。

我在网上搜了下,说是当你双击自定义格式的文件(比如.abc)后,Windows操作系统就会把打开的路径和文件名往WinMain函数里第三个参数lpCmdLine传递进去,要处理这个命令行参数才行。

但问题又来了,我在WinMain里加了MessageBox(NULL,(LPCTSTR)szCmdLine, TEXT("Command Line"), MB_OK);想要把这个参数弹出来看看,结果编译运行后弹出来是个空字符串!!用消息框把GetCommandLine()弹出来瞧瞧,看到的却是E:\visual c ++6.0英文版\MSDev98\MyProjects\My我的程序名!!!

而我双击打开自定义的文本文件(比如.abc)时,自编的记事本启动了,这两个消息框压根就没看到他们弹出来!!

请问这是怎么回事??要怎么处理lpCmdLine参数,来实现双击打开文件就自动读取和显示文本呢??就算CreateFile读出来了,还需要干别的事吗??

[解决办法]
需要修改注册表中相关扩展名的文件关联。如:

command = "你的程序文件名" "%1"

然后你的程序中用GetCommandLine获取命令行参数,作为文件名打开即可。
[解决办法]
说明参数就没有传进去。你的注册表中是怎么关联的?

热点排行