ウィンドウのように MessageBox を操作する方法を探しています。実際にCreateWindowEx
小さなウィンドウを使用して作成する必要がWM_GETTEXT
ありWM_SETTEXT
ますか。これらのメッセージを MessageBox に送信しますか? WindowsメッセージをMessageBoxに絶対に送信できない場合、CreateWindowEx
探しているものを達成するために使用するよりも簡単な代替方法はありますか?
質問する
899 次
1 に答える
2
ウィンドウハンドルを取得するためにWH_CBT
呼び出すときは、スレッドローカルフックを使用します。MessageBox()
その後、他のウィンドウと同じようにメッセージを送信できます。
// if you need to customize MessageBox() across threads,
// store this variable in a TLS (thread-local storage) slot...
HHOOK hHook;
LRESULT CALLBACK MyCBTHook(int nCode, WPARAM wParam, LPARAM lParam)
{
switch (nCode)
{
case HCBT_CREATEWND: // window is being created
case HCBT_ACTIVATE: // window is being activated
{
HWND hWnd = (HWND) wParam;
// use hWnd as needed...
break;
}
}
return CallNextHookEx(hHook);
}
int MyMessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)
{
hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)&MyCBTHook, NULL, GetCurrentThreadId());
int iResult = MyMessageBox(hWnd, lpText, lpCaption, uType);
UnhookWindowsHookEx(hHook);
return iResult;
}
于 2013-01-28T09:13:47.263 に答える