【发布时间】:2018-09-24 17:15:20
【问题描述】:
我正在尝试显示命令行参数。 这是我当前的代码。
#include "windows.h"
int _stdcall WinMain ( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpszCmdline,
int nCmdShow )
{
MessageBox ( 0, lpszCmdLine,L"Title",0);
return ( 0 ) ;
}
我在应用程序中得到了不同的字符。
为了在应用程序窗口中显示命令行参数,我应该做哪些更改?
【问题讨论】:
-
从未在 C 中见过这种语法,我用 C 编写了一段时间 :o
-
您是否定义了
UNICODE宏?那么MessageBox真的是MessageBoxW,它是宽字符wchar_t的变体。而LPSTR仍然是char *,是一个窄字符串。编译器应该抱怨那个 IIRC。 -
@Simo Win API 的合法代码..
-
@EugeneSh。我只是想知道
-
您正在调用
MessageBox的Unicode 版本。lpszCmdline被解释为指向一个宽字符串。每两个 ASCII 字符被视为单个 Unicode 字符;纯粹是偶然的,那个字符落在 CJK 代码块中(嗯,不是偶然的;那个代码块是一大块 Unicode 空间,所以随机选择的字符很有可能落在那里)。在 C++ 中,您会遇到类型不匹配错误;但是 C 允许在任意两种指针类型之间进行隐式转换。
标签: visual-studio-2010 winapi visual-c++