我想用自编的记事本程序打开自定义的文本文件(比如.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读出来了,还需要干别的事吗??
我双击自定义的文本文件(比如.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读出来了,还需要干别的事吗??
可以参看<Windows程序设计>里的记事本程序,它也不能实现双击文件读取和显示内容
EnableShellOpen();
RegisterShellFileTypes(TRUE);
转个帖子你参考下:参考
跟进MFc这个函数源代码中。。能够看到MFC对应的实现。。有对应的API的。。到时候,你就了然是神马一回事了