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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

MFC指示燈學(xué)習(xí)

2019-11-10 20:32:11
字體:
供稿:網(wǎng)友

操作步驟

 1、在資源編輯的時候選中按鈕的 Owner draw 屬性,不需要選擇 Bitmap 屬性.       按鈕右鍵-->Styles-->Owner draw 2、在程序中定義一個CBitmapButton成員變量。        屬性添加變量,修改變量類型為CBitmapButton 3、在資源視圖中添加資源Bitmap(照片格式要為bmp) 4、初始化OnInitDialog函數(shù)中添加如下代碼
BOOL b = m_btbutton.LoadBitmaps(IDB_BITMAP1,IDB_BITMAP3);   //載入照片m_btbutton.SizeToContent();  //使按鈕適應(yīng)圖片大小  5、重載PReTranslateMessage函數(shù),使得按鍵控制顯示照片
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();//重新繪制調(diào)用者本身     //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);}運(yùn)行之后:按下‘a(chǎn)’和‘d’后實(shí)現(xiàn)過程中解決問題:1.照片格式問題。之前png格式編譯總是不通過,選用bmp格式照片解決問題。2.MSG類typedef struct tagMSG {    HWND        hwnd;    UINT        message;    WPARAM      wParam;    LPARAM      lParam;    DWord       time;    POINT       pt;} MSG
       第一個成員變量hwnd表示消息所屬的窗口。我們通常開發(fā)的程序都是窗口應(yīng)用程序,一個消息一般都是與某個窗口相關(guān)聯(lián)的。例如,在某個活動窗口中按下鼠標(biāo)左鍵,產(chǎn)生的按鍵消息就是發(fā)給該窗口的。在Windows程序中,用HWND類型的變量來標(biāo)識窗口。  第二個成員變量message指定了消息的標(biāo)識符。在Windows中,消息是由一個數(shù)值來表示的,不同的消息對應(yīng)不同的數(shù)值。但是由于數(shù)值不便于記憶,所以Windows將消息對應(yīng)的數(shù)值定義為WM_XXX宏(WM是Window Message的縮寫)的形式,XXX對應(yīng)某種消息的英文拼寫的大寫形式。例如,鼠標(biāo)左鍵按下消息是WM_LBUTTONDOWN,鍵盤按下消息是WM_KEYDOWN,字符消息是WM_CHAR,等等。在程序中我們通常都是以WM_XXX宏的形式來使用消息的?! √崾荆喝绻胫繵M_XXX消息對應(yīng)的具體數(shù)值,可以在Visual C++開發(fā)環(huán)境中選中WM_XXX,然后單擊鼠標(biāo)右鍵,在彈出菜單中選擇goto definition,即可看到該宏的具體定義。跟蹤或查看某個變量的定義,都可以使用這個方法。  第三、第四個成員變量wParam和lParam,用于指定消息的附加信息。例如,當(dāng)我們收到一個字符消息的時候,message成員變量的值就是WM_CHAR,但用戶到底輸入的是什么字符,那么就由wParam和lParam來說明。wParam、lParam表示的信息隨消息的不同而不同。如果想知道這兩個成員變量具體表示的信息,可以在MSDN中關(guān)于某個具體消息的說明文檔查看到。讀者可以在VC++的開發(fā)環(huán)境中通過goto definition查看一下WPARAM和LPARAM這兩種類型的定義,可以發(fā)現(xiàn)這兩種類型實(shí)際上就是unsigned int和long。  最后兩個變量分別表示消息投遞到消息隊列中的時間和鼠標(biāo)的當(dāng)前位置。 3.GetKeyState函數(shù)GetKeyState是指定虛擬鍵的狀態(tài)的一個函數(shù)。該函數(shù)檢取指定虛擬鍵的狀態(tài)。該狀態(tài)指定此鍵是UP狀態(tài),DOWN狀態(tài),還是被觸發(fā)的(開關(guān)每次按下此鍵時進(jìn)行切換)。例子:::GetKeyState(VK_SHIFT) > 0 沒按下::GetKeyState(VK_SHIFT) < 0被按下返回值給出了給定虛擬鍵的狀態(tài),狀態(tài)如下:若高序位為1,則鍵處于DOWN狀態(tài),否則為UP狀態(tài)。
若低序位為1,則鍵被觸發(fā)。例如CAPS LOCK鍵,被找開時將被觸發(fā)。若低序位置為0,則鍵被關(guān)閉,且不被觸發(fā)。觸發(fā)鍵在鍵盤上的指示燈,當(dāng)鍵被觸發(fā)時即亮,鍵不被觸發(fā)時即滅。備注:當(dāng)給定線程從它的消息隊列中讀鍵消息時,該函數(shù)返回的鍵狀態(tài)發(fā)生改變。該狀態(tài)并不反映與硬件相關(guān)的中斷級的狀態(tài)。使用GetAsyncKeyState可獲取這一信息。4.Invalidate();//重新繪制調(diào)用者本身參考文檔: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
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 洱源县| 阿坝县| 格尔木市| 九龙县| 积石山| 全南县| 武邑县| 深水埗区| 安远县| 清水县| 平谷区| 凤城市| 朝阳县| 西城区| 平罗县| 旺苍县| 巩义市| 四川省| 兴文县| 大庆市| 佛学| 敖汉旗| 澄城县| 阜宁县| 藁城市| 上高县| 石首市| 江达县| 农安县| 普兰店市| 吴桥县| 东乡| 潢川县| 余江县| 疏附县| 资中县| 民勤县| 家居| 黄骅市| 阆中市| 德保县|