1. ホーム
  2. c++

[解決済み] LPCWSTRとは何の略で、どのように扱えばいいのでしょうか?

2022-03-16 16:09:30

質問

まず、これは一体何なのでしょうか?ポインタ(LPCはロングポインタ定数の意味)だと思うのですが、"W"とはどういう意味なのでしょうか?文字列への特定のポインタなのでしょうか、それとも特定の文字列へのポインタなのでしょうか? 例えば、"TestWindow"という名前のWindowを閉じたいのですが、どうすればいいのでしょうか?

HWND g_hTest;
LPCWSTR a;
*a = ("TestWindow");
g_hTest = FindWindowEx(NULL, NULL, NULL, a);
DestroyWindow(g_hTest);

const char[6] は CONST WCHAR に変換できないので、このコードは不正であり、動作しません。 全く理解できない。 LPCWSTR, LPCSTR, LPSTRのすべてを明確に理解したいのです。ということで、いろいろと調べてみたのですが、余計にわからなくなってしまいました。msdnのサイトでは FindWindowEx は次のように宣言されています。

HWND FindWindowEx(      
    HWND hwndParent,
    HWND hwndChildAfter,
    LPCTSTR lpszClass,
    LPCTSTR lpszWindow
);

つまり、最後のパラメータはLPCSTRであり、コンパイラはLPCWSTRを要求しているのです。 助けてください。

どのように解決するのですか?

LPCWSTR は "Long Pointer to Constant Wide String" を意味します。Wはワイドを表し、文字列が2バイト文字で格納されることを意味します。 char . 非ASCII文字列のみを扱う必要があるC/C++コードに共通することです。

に代入する通常のCリテラル文字列を取得する。 LPCWSTR を付ける必要があります。

LPCWSTR a = L"TestWindow";