国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MFC指示燈學習

2019-11-10 18:11:03
字體:
來源:轉載
供稿:網友

操作步驟

 1、在資源編輯的時候選中按鈕的 Owner draw 屬性,不需要選擇 Bitmap 屬性.       按鈕右鍵-->Styles-->Owner draw 2、在程序中定義一個CBitmapButton成員變量。        屬性添加變量,修改變量類型為CBitmapButton 3、在資源視圖中添加資源Bitmap(照片格式要為bmp) 4、初始化OnInitDialog函數中添加如下代碼
BOOL b = m_btbutton.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP3);   //載入照片m_btbutton.SizeToContent();  //使按鈕適應圖片大小  5、重載PReTranslateMessage函數,使得按鍵控制顯示照片
BOOL CledDlg::PreTranslateMessage(MSG *pMsg){if (pMsg->message==WM_CHAR){   switch (pMsg->wParam)   {   case 'a':    if (::GetKeyState('A')<0)    {	m_btbutton.LoadBitmaps(IDB_BITMAP3);   	m_btbutton.Invalidate();//重新繪制調用者本身     //AfxMessageBox(_T("ss"));    }    break;   case 'd':    if (::GetKeyState('D')<0)    {	m_btButton2.LoadBitmaps(IDB_BITMAP4);   	m_btButton2.Invalidate();     //AfxMessageBox(_T("ss"));    }    break;   }}    return CDialog::PreTranslateMessage(pMsg);}運行之后:按下‘a’和‘d’后實現過程中解決問題:1.照片格式問題。之前png格式編譯總是不通過,選用bmp格式照片解決問題。2.MSG類typedef struct tagMSG {    HWND        hwnd;    UINT        message;    WPARAM      wParam;    LPARAM      lParam;    DWord       time;    POINT       pt;} MSG
       第一個成員變量hwnd表示消息所屬的窗口。我們通常開發的程序都是窗口應用程序,一個消息一般都是與某個窗口相關聯的。例如,在某個活動窗口中按下鼠標左鍵,產生的按鍵消息就是發給該窗口的。在Windows程序中,用HWND類型的變量來標識窗口。  第二個成員變量message指定了消息的標識符。在Windows中,消息是由一個數值來表示的,不同的消息對應不同的數值。但是由于數值不便于記憶,所以Windows將消息對應的數值定義為WM_XXX宏(WM是Window Message的縮寫)的形式,XXX對應某種消息的英文拼寫的大寫形式。例如,鼠標左鍵按下消息是WM_LBUTTONDOWN,鍵盤按下消息是WM_KEYDOWN,字符消息是WM_CHAR,等等。在程序中我們通常都是以WM_XXX宏的形式來使用消息的。  提示:如果想知道WM_XXX消息對應的具體數值,可以在Visual C++開發環境中選中WM_XXX,然后單擊鼠標右鍵,在彈出菜單中選擇goto definition,即可看到該宏的具體定義。跟蹤或查看某個變量的定義,都可以使用這個方法。  第三、第四個成員變量wParam和lParam,用于指定消息的附加信息。例如,當我們收到一個字符消息的時候,message成員變量的值就是WM_CHAR,但用戶到底輸入的是什么字符,那么就由wParam和lParam來說明。wParam、lParam表示的信息隨消息的不同而不同。如果想知道這兩個成員變量具體表示的信息,可以在MSDN中關于某個具體消息的說明文檔查看到。讀者可以在VC++的開發環境中通過goto definition查看一下WPARAM和LPARAM這兩種類型的定義,可以發現這兩種類型實際上就是unsigned int和long。  最后兩個變量分別表示消息投遞到消息隊列中的時間和鼠標的當前位置。 3.GetKeyState函數GetKeyState是指定虛擬鍵的狀態的一個函數。該函數檢取指定虛擬鍵的狀態。該狀態指定此鍵是UP狀態,DOWN狀態,還是被觸發的(開關每次按下此鍵時進行切換)。例子:::GetKeyState(VK_SHIFT) > 0 沒按下::GetKeyState(VK_SHIFT) < 0被按下返回值給出了給定虛擬鍵的狀態,狀態如下:若高序位為1,則鍵處于DOWN狀態,否則為UP狀態。
若低序位為1,則鍵被觸發。例如CAPS LOCK鍵,被找開時將被觸發。若低序位置為0,則鍵被關閉,且不被觸發。觸發鍵在鍵盤上的指示燈,當鍵被觸發時即亮,鍵不被觸發時即滅。備注:當給定線程從它的消息隊列中讀鍵消息時,該函數返回的鍵狀態發生改變。該狀態并不反映與硬件相關的中斷級的狀態。使用GetAsyncKeyState可獲取這一信息。4.Invalidate();//重新繪制調用者本身參考文檔:http://blog.csdn.net/akof1314/article/details/4951836/http://www.cnblogs.com/QQingmu/archive/2007/09/06/884840.htmlhttp://www.cnblogs.com/huipengkankan/archive/2011/09/21/2184479.htmlhttp://blog.sina.com.cn/s/blog_a5b3ed560101bwgm.html
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 静安区| 当涂县| 黎城县| 岱山县| 胶州市| 玉屏| 获嘉县| 潍坊市| 扶余县| 嘉鱼县| 仙居县| 马尔康县| 榆树市| 盐边县| 仁寿县| 武陟县| 桐乡市| 辽阳县| 海城市| 大名县| 南澳县| 望都县| 仙居县| 汉寿县| 海晏县| 阿巴嘎旗| 沾化县| 聂拉木县| 阿克陶县| 都安| 全州县| 延长县| 东丰县| 长治市| 且末县| 安乡县| 安康市| 东宁县| 九寨沟县| 江城| 深水埗区|