【发布时间】:2011-08-11 16:18:09
【问题描述】:
如何让 Win32 应用程序在启动时以这样的方式打开文件(例如使用快捷方式或通过命令行)?
program.exe "document.txt"
【问题讨论】:
-
解析传递给
WinMain的lpCmdLine参数,提取文件名,打开文件。
如何让 Win32 应用程序在启动时以这样的方式打开文件(例如使用快捷方式或通过命令行)?
program.exe "document.txt"
【问题讨论】:
WinMain的lpCmdLine参数,提取文件名,打开文件。
link 展示了如何检索命令行参数并将它们转换为字符串数组
即使它是用main 编写的,它也同样适用于WinMain 或任何其他函数
【讨论】:
LPWSTR 的数组中有参数。但是如何在消息框中使用这些值或将它们转换为char*?
fopen 中的文件名,但它是LPWSTR 和fopen 需要char*。我还想使用SetWindowText在标题栏中显示文件名。
LPWSTR 文件名使用变量fileNameW 存储。字符串的长度(包括NULL)由size_t length = wcslen(fileNameW);找到。然后可以将char* 缓冲区声明为char *fileNameA = new char[length];。最后,可以使用wcstombs 函数填充缓冲区,如下所示:wcstombs(fileNameA, fileNameW, length);。
如果你有一个 Unicode 程序使用lpCmdLine,否则使用GetCommandLineW 并将结果传递给CommandLineToArgvW 以获取程序参数的字符串列表,那么它就像使用命令行一样工作程序。
【讨论】: