前幾天要做乙個dll的介面函式,在呼叫該介面函式時要彈出乙個對話方塊,必須等對
話框銷毀後函式才能返回,當時想到了用模態對話方塊來實現這個功能,但模態對話方塊
有個缺點是阻塞訊息,這樣我的程式就不能做其他事情了,這個方案被pass了,接下
來只能用非模態對話方塊了,我是通過雙線程來實現的,在主線程中建立了乙個子執行緒,
子執行緒負責建立對話方塊並處理與之有關的訊息,主線程在建立完子執行緒後開始等待直
到對話方塊銷毀再返回,好了廢話不多說,下面是我的實現過程:
1先定義執行緒函式和訊息
#define wm_dlgdestory_msg wm_user+89
uint threadfunc(lpvoid pparm); //執行緒函式的定義
2 再在主線程中啟動該執行緒並等待訊息
void cmaindlg::onbnclickedbutton()
translatemessage(&msg);
dispatchmessage(&msg);
}}3 接下來就是最關鍵的實現子執行緒
uint threadfunc(lpvoid pparm)
return 0;
}4在子視窗的銷毀函式中傳送訊息
void ctestdlg::ondestroy()
{ cdialogex::ondestroy();
// todo: 在此處新增訊息處理程式**
::postmessage(m_mainwnd, wm_dlgdestory_msg, 0, null); //向主視窗傳送訊息
Qt等待對話方塊結束
接觸qt一年左右,還算個新手。剛剛一直糾結於如何在等待qt對話方塊結束後獲得對話方塊的資料,現在終於搞定了。imageselection imselection new imageselection this if imselection exec qdialog accepted qstring ...
Qt下等待對話方塊的設計
在qt程式經常長時間操作時採用乙個等待對話方塊來提示使用者正在操作。qt有標準的qprocessdialog 能部分實現這個功能,但是缺點是要計算進度,二是使用者可以中途取消。所以一般我們採用自定義對話方塊實現這個功能。其中的思路和素材 於 但這個只乙個思路演示,我這裡實現是完整 增加了圓角矩形背景...
非模態對話方塊的建立於銷毀
橡皮線的工作原理 就必須不停地在新位置畫出線段,並把以前的畫出的線段擦掉。如果背景是單一的顏色,那就好辦了,只需要構造一支背景顏色的畫筆和一支前景顏色的畫筆,然後首先用背景色畫筆擦出上次的線段,再用前景顏色的畫筆畫出新的線段,就可以實現橡皮線了。由於橡皮線的起點是不變的,而終點在不停地改變,因此,還...