HWND型のwstring型へのキャスト方法を知りたい
キャストと言うよりは、HWND
型とwstring
型では完全に型の性質が違うので、HWND
型変数の値を文字列にしてwstring
型の変数に入れるようなやり方になるかと思います。
C++
1#include "pch.h"
2#include <Windows.h>
3#include <iostream>
4#include <locale>
5
6#include <sstream>
7#include <iomanip> // std::setw, std::setfill
8
9int main()
10{
11 HWND hwnd = GetForegroundWindow();
12 // hwnd = (HWND)0xab1234;
13
14 wchar_t wsbuf[32];
15 std::wstring result;
16
17 // HWND は PVOID (void*) 型のtypedefなので
18
19 // (1) HWNDをポインタとして扱うなら
20 wsprintf(wsbuf, L"%p", hwnd);
21 result = L"HWND(%p) is " + std::wstring(wsbuf);
22 std::wcout << result << std::endl;
23
24 // (2) UINT(UINT_PTR)として扱うなら
25 wsprintf(wsbuf, L"%08X", (UINT_PTR)hwnd);
26 result = L"HWND(%08X) is " + std::wstring(wsbuf);
27 std::wcout << result << std::endl;
28
29 // (3) std::stringstream を使うなら
30 std::wstringstream stream;
31 stream << std::setw(8) << std::setfill(L'0') << hwnd;
32 std::wstring temp = stream.str();
33
34 std::wstring ws = L"HWND is ";
35 result = ws + temp;
36 std::wcout << result << std::endl;
37
38 return 0;
39}
コマンドプロンプトでの実行例です。
CMD
1C> t1.exe
2HWND(%p) is 00AB1234
3HWND(%08X) is 00AB1234
4HWND is 00AB1234
5
6C>
Visual Studio 2017 Professional版で確認しました。実行ファイルは32ビット版で作成したのでHWND
型の値は16進数8桁(%08X)としましたが、64ビット版とする場合や、頭の0
が不要なのであれば適切に変更してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/12 23:04
2019/12/13 01:09
2019/12/13 01:32
2019/12/13 01:36
2019/12/13 01:46
2019/12/13 01:57
2019/12/13 14:25
2019/12/14 01:50
2019/12/16 16:48