用sendmessage的方式解決(菜鳥步驟)
1、在主窗體標頭檔案中用下列函式註冊windows訊息
const uint wm_myupdatedata = ::registerwindowmessage(_t("myupdatedata"));
2、在主窗體標頭檔案中的訊息對映函式申明處新增下列對映
afx_msg void onupdatemydata(wparam wp, lparam lp);
3、在主窗體cpp檔案中新增註冊函式在end_message_map()之前
on_registered_message(wm_myupdatedata,onupdatemydata)
4、在主窗體cpp檔案中新增函式
void cdlg::onupdatemydata(wparam wp,lparam lp)
5、在所用執行緒中新增更新函式訊息,即進行了updatedata()
pdlg->sendmessage(wm_myupdatedata,true);
mfc執行緒中不能用updatedata,怎麼解決(詳細).
獲得控制代碼,通過getwindowtext( hwnd, buffer, len );得到控制項內容。可以把父視窗指標作為引數傳到執行緒裡來獲取控制代碼。同理,可以通過setwindowtext設定內容。
比如傳入的是對話方塊的指標pdlg,比如你已知id,那麼設定如下:pdlg->getdlgitem( id )->setwindowtext("你要設定的東西");
另一種方法是訊息處理,自定義訊息,然後執行緒內postmessage和引數,在你的外部來處理該訊息。
補充:
1、hwnd hwnd = ( cwnd* )pwnd->getdlgitem( id );
2、執行緒函式定義如下uint winapi workthread( lpvoid lpcontext ); 應用時可以這樣,
cyourdlg dlg;
createthread(...,(引數)(lpvoid) &dlg );
在函式裡這樣寫:
cyourdlg* pdlg = ( cyourdlg* ) lpcontext;
if ( pdlg )
獲得控制代碼,通過getwindowtext( hwnd, buffer, len );得到控制項內容。可以把父視窗指標作為引數傳到執行緒裡來獲取控制代碼。同理,可以通過setwindowtext設定內容。
比如傳入的是對話方塊的指標pdlg,比如你已知id,那麼設定如下:pdlg->getdlgitem( id )->setwindowtext("你要設定的東西");
另一種方法是訊息處理,自定義訊息,然後執行緒內postmessage和引數,在你的外部來處理該訊息。
補充:
1、hwnd hwnd = ( cwnd* )pwnd->getdlgitem( id );
2、執行緒函式定義如下uint winapi workthread( lpvoid lpcontext ); 應用時可以這樣,
cyourdlg dlg;
createthread(...,(引數)(lpvoid) &dlg );
在函式裡這樣寫:
cyourdlg* pdlg = ( cyourdlg* ) lpcontext;
if ( pdlg )
MySQL 只能用localhost不能用ip連線
如果本地主機能用ip連線,但其他計算機登陸不到,錯誤時10060時,一般是防火牆問題,關閉防火牆或允許3306埠即可 登入進去後用以下命令可以檢視許可權用 mysql use mysql mysql select user,host from user mysqluser,host from use...
藍芽不能用了
今天突然發現筆記本的藍芽不能用了,藍芽指示燈也沒有亮。使用 rfkill 檢查,發現被 block 了 rfkill list 0 tpacpi bluetooth sw bluetooth soft blocked yes hard blocked no 1 phy0 wireless lan s...
centos locate命令不能用
今日最小化安裝centos 6.0 完事後 用locate 查詢檔案 提示 bash locate command not found 那就先updatedb一下吧 提示 bash updatedb command not found baidu說updatedb 不能用先要安裝 slocate y...