WINAPI で親のないボタンを作成できますか?
私はやってみました:
CreateWindowEx(0, "Button", "BTN", WS_POPUP | BS_PUSHBUTTON, 0, 0, 15, 15, nullptr, nullptr, nullptr, nullptr);
次に、後で親を指定されたウィンドウに設定し、ShowWindow を使用してボタンを表示します。これにより、実際に見栄えの良いボタンが作成されました。
ただし、ボタンには ID がなく、ID が 0 であるため WM_COMMAND で識別できません。2 つのボタンが親のない場合、それらを区別する方法はありません。HMENU パラメータで ID を指定すると、次のようになります。
CreateWindowEx(0, "Button", "BTN", WS_POPUP | BS_PUSHBUTTON, 0, 0, 15, 15, nullptr, 15, nullptr, nullptr);
GetLastError() は「無効なメニュー ハンドル」を出力し、ボタンは作成されません。
親と WS_CHILD を指定しないと、理解できる最上位の子ウィンドウを作成できないと表示されます。
そこで私がしたことは、Parent を GetDesktopWindow() に設定し、ボタンに ID を与えることでした。それは機能しますが、ボタンは親なしではありません..
ボタンに ID を与え (WM_COMMAND で識別できるように)、同時にその親を NULL にして、後で親を設定できるようにする方法はありますか? Windowsフォームはどのようにそれを行いますか? Form.add(ButtonName); を実行するまで、ボタンは親なしにすることができます。
WINAPIでも同じ効果が得られるでしょうか?