我試圖用一個熱鍵,可以是透明的,允許鼠標消息才能通過改變一個分層的窗口。創建兩個Windows原因二創建到燒盡
在我的主要功能我叫
// make hotkey with WM_HOTKEY messages sent to hwnd's window procedure, id 1,
// no other keys to work, F5 as hotkey
// while checking for errors and it completes successfully. I also do the same
// (id of 2) for VK_F7 and it completes successfully.
RegisterHotKey (hwnd, 1, 0, VK_F5);
RegisterHotKey (hwnd, 2, 0, VK_F7);
在我的窗口過程中,我有
case WM_HOTKEY:
MessageBox (hwnd, "Got here", "Attention", MB_OK);
// Other stuff I need to do here
我嘗試添加MOD_CONTROL
,但無濟於事。
這實際上沒有工作之前。現在唯一的區別是我意識到兩個窗口可以解決我遇到的問題。上次我只有一個,現在我的應用程序中有兩個窗口過程。我確定這一切都是正確的,但是我不應該僅限於一個窗口......窗口本身顯示,因爲我將透明度設置爲100/255,因此它稍微遮擋了視圖,並且我可以看到那個屏幕。
改變本身並沒有什麼鑰匙,和WM_HOTKEY消息被髮布到隊列中。我會嘗試手動將它們發送到窗口。
編輯:^與SendMessage()不工作,去看看它是否得到任何消息,並與我在其中的其他窗口相同。
編輯:好吧,我覺得這麼說是個白癡,但我不得不RegisterHotKey
將空HWND,因爲我並沒有真正創建一個窗口,但(我創建了一個不首先得到熱鍵消息和原來有這些權之後)。 問題是即使我可以看到這個窗口,並且如果我評論它全部出來的視圖是不同的(沒有屏幕),它沒有收到任何消息。
編輯:我改變了標題的東西更適合搭配這種額外的信息。如果這是任何人經驗豐富的通用東西,我會很高興聽到。現在,我假設它是我的包裝並手動創建它們。
主要編輯:我只是用,而不是我的包裝的原始API嘗試,它有一個錯誤登記第二。我改變了類名,現在類註冊並創建了窗口。出現熱鍵的消息框也顯示。我想我忘記了爲他們展示窗口,但我會說在一秒鐘內如何工作(編輯:我重新啓動計算機後再次!!!)。在你問之前,我沒有花太多時間在我的包裝器上,是的,它有錯誤檢查,但使用一個類似的系統來設置/獲取lasterror(),我沒有檢查它們的返回值,因爲第二個一個似乎是之前創建的。
您是否在同一個線程上創建了兩個窗口?你在消息循環中檢查了WM_HOTKEY嗎? –
我基本上設置了一個窗口,創建它,然後設置另一個窗口並在之後創建它。如果你的意思是main()中的消息循環,我不應該因爲我指定了相關的窗口。儘管如此,我仍然要確保它們首先被髮布。編輯:是的,他們正在發送,我通過檢查(msg.message == WM_HOTKEY)MessageBox(...); – chris
如果他們到達你的消息循環,那麼你的窗口過程並不是你想象的那樣,或者你是錯誤的。你的消息循環是什麼樣的? –