日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC UI按钮多线程

發布時間:2025/3/13 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC UI按钮多线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單線程操作UI會使窗口假死,所以UI操作需要用到多線程

?

實現效果:當點擊kiss時按鈕閃動3次

原理:自定義一個消息(WM_CHANGE_BUTTON),當點擊按鈕"kiss"時,啟動一個新的線程,線程每隔0.5s鐘發送一次WM_CHANGE_BUTTON消息。程序監聽到該消息時調用消息函數,改變按鈕大小。

1、在界面上添加一個按鈕修改ID為?IDC_KISS??

2、ctrl+shift+x,創建類向導中的消息機制

3、定義事件函數

#define WM_CHANGE_BUTTON WM_USER+1 #define SLEEP_TIMES 200 void Change(LPVOID pParam) {//下面的消息使得按鈕閃爍三次 ::SendMessageA(AfxGetThread()->m_pMainWnd->m_hWnd, WM_CHANGE_BUTTON, 0, (LPARAM)pParam);Sleep(SLEEP_TIMES);::SendMessageA(AfxGetThread()->m_pMainWnd->m_hWnd, WM_CHANGE_BUTTON, 1, (LPARAM)pParam);Sleep(SLEEP_TIMES);::SendMessageA(AfxGetThread()->m_pMainWnd->m_hWnd, WM_CHANGE_BUTTON, 0, (LPARAM)pParam);Sleep(SLEEP_TIMES);::SendMessageA(AfxGetThread()->m_pMainWnd->m_hWnd, WM_CHANGE_BUTTON, 1, (LPARAM)pParam);Sleep(SLEEP_TIMES);::SendMessageA(AfxGetThread()->m_pMainWnd->m_hWnd, WM_CHANGE_BUTTON, 0, (LPARAM)pParam);Sleep(SLEEP_TIMES);::SendMessageA(AfxGetThread()->m_pMainWnd->m_hWnd, WM_CHANGE_BUTTON, 1, (LPARAM)pParam);Sleep(SLEEP_TIMES); }

4、定義按鈕事件

afx_msg LRESULT CMFCThreadButtonTest1Dlg::OnChangeButton(WPARAM wParam, LPARAM lParam) {CButton *pBtn = (CButton*)GetDlgItem((int)lParam);int x = 100;int y = 80;CRect rect;pBtn->GetWindowRect(&rect);//上面的函數獲取的是按鈕相對于整個屏幕的坐標,需要用下面這個函數//轉化為相對于父窗口的坐標ScreenToClient(&rect);//改變CRect并重新賦值給button if(wParam) { rect.left-=5; rect.top-=5; rect.bottom+=5; rect.right+=5; } else { rect.left+=5; rect.top+=5; rect.bottom-=5; rect.right-=5;}//MoveWindow不僅僅是“移動”他還可以改變窗口大小pBtn->MoveWindow(&rect);return 0; }void CMFCThreadButtonTest1Dlg::OnBnClickedKiss() {// TODO: 在此添加控件通知處理程序代碼AfxBeginThread((AFX_THREADPROC)Change,(LPVOID)IDC_KISS,0,0,0,0); }

參考來源

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/bkycjj/p/4542922.html

總結

以上是生活随笔為你收集整理的MFC UI按钮多线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。