跨線程彈出選單

2021-09-30 09:26:02 字數 314 閱讀 7888

大家知道,呼叫trackpopupmenu彈出選單時,要求呼叫這個api的執行緒和接受選單訊息的視窗屬於同乙個執行緒,不然選單不能成功的彈出。

我最近的乙個專案裡,就遇到了這個問題:要在ui線程彈出選單,但是接收選單訊息的視窗在另外乙個邏輯執行緒。

為了能夠正常彈出選單,我們一開始的想法是規避這個問題,讓選單在同乙個執行緒工作,但是這樣對現有的架構改動比較大。

我最後是這樣解決這個問題的:

1.建立乙個和選單在同一執行緒的視窗來接收選單訊息,保證選單能正常彈出。

2.將接收到的選單訊息,**給另乙個執行緒的視窗。

目前選單工作的很正常。

關於彈出選單

在用vc做一些軟體功能的時候,為了方便使用,通常會涉及到托盤程式設計。也就是在程式最小化的時候,會在右下角的托盤區域新增乙個圖示,這個圖示通常會支援彈出選單功能。問題就在這裡出現了,你也許會發現我們使用trackpopupmenu撥出的彈出選單,如果使用者在取消選擇的時候,在桌面任意地方單擊,這個選...

Air彈出選單

有時候,需要對某個控制項使用右鍵選單,右鍵選單的好處是可以隱藏,在需要的時候才開啟。下面是 建立自定義選單 新增右鍵選單 var rightmenu contextmenu new contextmenu rightmenu.hidebuiltinitems 有這句話就不顯示 列印 選單了 var ...

多選彈出選單

pop a mul choice dialog choice permission private void muldialog final string filename 選單項 儲存你的選擇 s說明一下 final 定義的陣列,其值可變,但是型別不能變 因為final的只是 陣列的位址 位址不可...