青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Sunshine Alike

半完美主義

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  35 Posts :: 1 Stories :: 56 Comments :: 0 Trackbacks

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51327
  • 排名 - 451

最新隨筆

最新評(píng)論

鍵盤和鼠標(biāo)在 windows 中的重要性不必多說,地球人都知道!鍵盤上每一個(gè)有意義的鍵都對(duì)應(yīng)著一個(gè)唯一的標(biāo)識(shí)值,稱之為掃描碼。但是這種掃描碼是硬件相關(guān)的,為了實(shí)現(xiàn)設(shè)備無關(guān)性的要求,在 windows 應(yīng)用程序中,使用的往往是與設(shè)備無關(guān)的虛擬碼

對(duì)鍵盤操作的響應(yīng)過程基本如下:

用戶按下一個(gè)鍵時(shí),與鍵盤驅(qū)動(dòng)程序( KEYBOARD.DRV )進(jìn)行中斷處理并調(diào)用 windows 用戶模塊( USER.EXE )中的有關(guān)程序來生成鍵盤消息,然后消息被發(fā)送到系統(tǒng)的消息隊(duì)列中由相應(yīng)的應(yīng)用應(yīng)用程序進(jìn)行處理。鼠標(biāo)的處理過程與鍵盤類似。但是注意無論是鼠標(biāo)還是鍵盤的所產(chǎn)生的消息經(jīng)過操作系統(tǒng)處理后都只會(huì)被發(fā)送給特定的窗口,即具有“輸入焦點(diǎn)”的窗口來進(jìn)行處理。

?

??????????? 鍵盤消息
鍵盤消息通常可分為按鍵消息和字符消息兩類,用戶按下或松開一個(gè)鍵時(shí),就產(chǎn)生一個(gè)按鍵消息,當(dāng)一個(gè)按鍵組合產(chǎn)生了一個(gè)可以顯示的字條時(shí),就產(chǎn)生了一個(gè)字符消息。

按鍵消息一般又可以分為系統(tǒng)按鍵和非系統(tǒng)按鍵。

系統(tǒng)按鍵:是指使用了 Alt 等與相關(guān)輸入鍵組成產(chǎn)生的消息,一般這些消息都由操作系統(tǒng)內(nèi)部直接處理。如果應(yīng)用程序處理了這些系統(tǒng)鍵消息,就要調(diào)用 DefWindowProc 函數(shù),以便不影響 windows 對(duì)它們的處理。

非系統(tǒng)按鍵:對(duì)應(yīng)于那些不使用組合鍵的按鍵消息。

?

再對(duì)按鍵消息的兩個(gè)變量 wParam lParam 做一些解釋:(名堂還真不少 T_T

1.???????? wParam
包含了識(shí)別按下鍵的虛鍵碼,這些碼是由系統(tǒng)定義的設(shè)備無關(guān)的。可以在 windows.h 中找到找到相關(guān)定義。

2.???????? lParam
32
位的變量 lParam 所表示的含義可以分為以下 7 個(gè)部分

(1)????? 重復(fù)計(jì)數(shù)位( 0~15 位) ?????

表示當(dāng)前消息的重復(fù)次數(shù)。

(2)????? OEM 掃描碼( 16~23 位)

OEM 掃描碼是鍵盤發(fā)送的碼值,因?yàn)槭窃O(shè)備相關(guān)的幫一般被忽略掉。

(3)????? 擴(kuò)展鍵標(biāo)志( 24 位)

在有 Alt Ctrl 鍵按下時(shí)為 1, 否則為 0

(4)????? 保留位( 25~28 位) ??????????

系統(tǒng)保留,一般不用。

(5)????? 關(guān)聯(lián)碼( 29 位)

主要用來記錄某鍵與 Alt 等鍵的組合狀態(tài),若按下 Alt 鍵,當(dāng) WM_SYSKEYDOWN 消息發(fā)送到某個(gè)激活窗口時(shí),其值為 1, 否則為 0

(6)????? 鍵的先前狀態(tài)( 30 位)

用于記錄先前某鍵的狀態(tài)。

(7)????? 轉(zhuǎn)換狀態(tài)( 31 位)

用于記錄被始終按下的某鍵所產(chǎn)生的消息。

?

?????? WinMain 函數(shù)里的消息循環(huán)中包含了 TranslateMessage 函數(shù),它的主要功能是把按鍵消息轉(zhuǎn)化為字符消息,即把按鍵所產(chǎn)生的原始的KEYDOWN/KEYUP消息轉(zhuǎn)化成WM_CHAR消息。 同樣,字符消息也可以分為系統(tǒng)和非系統(tǒng)消息兩類。

?

Windows 系統(tǒng)支持兩類字符集: OEM ANSI OEM IBM 的字符集,在 windows 中使用不多,目前大多使用的是 ANSI 字符集。

?

??????????? 鼠標(biāo)消息

1.???????? 鼠標(biāo)操作

簡(jiǎn)單的單擊操作包含了按下和松開這一全過程;而雙擊操作實(shí)際上是指用戶在知時(shí)間內(nèi)(默認(rèn)為 0.5 秒)的再次單擊操作。

在鼠標(biāo)消息中,參數(shù) lParam 包含了鼠標(biāo)的位置,低字節(jié)是 X 坐標(biāo),高字節(jié)是 Y 坐標(biāo)。參數(shù) wParam 則包含了一個(gè)指示各種虛鍵狀態(tài)的值。

通過用戶區(qū)消息的 wParam lParam 參數(shù),程序員就可以確定鼠標(biāo)的位置和狀態(tài)。

對(duì)于鼠標(biāo)的消息處理,一般分為兩種,一種要對(duì) Ctrl 等鍵進(jìn)行監(jiān)視,另一種則不需要。下面是一個(gè)示例

case WM_LbUTTONDWON:?????? // 鼠標(biāo)按下時(shí) ctrl shift 都被按下

?????? If(( wParam&MK_CONTROL) && ( wParam&MK_SHIFT) )

??????

?????? break;

case WM_LBUTTONDOWN:?????? // 不監(jiān)視組合按鍵

??????

?????? break;

此外,要使窗口能監(jiān)視雙擊消息,必須在注冊(cè)窗口類的時(shí)候使該類具有 CS_DBLCLKS 屬性才行,否則只能收到兩條單擊消息。

2.???????? 光標(biāo)

可以使用系統(tǒng)光標(biāo)或者調(diào)用 LoadCursor 加載自定義光標(biāo)資源

??????????? 示例程序

在下面的一個(gè)例子中,顯示鼠標(biāo)和鍵盤的消息響應(yīng)。程序的用戶區(qū)被分為四個(gè)區(qū)域,每個(gè)區(qū)域里光標(biāo)設(shè)置成不同的樣式。通過監(jiān)視鍵盤按鍵,可對(duì)一個(gè) 10 個(gè)字符長(zhǎng)的緩沖區(qū)里輸入字符,并最后顯示在鼠標(biāo)上方,鼠標(biāo)移動(dòng)時(shí)同時(shí)修改字符輸出的位置。可以按下 BACK 鍵刪掉已經(jīng)輸入的字符,緩沖區(qū)滿時(shí)再輸入和空的時(shí)候刪字符的操作都被拒絕,并用消息框進(jìn)行提示。代碼如下:

// 定義的靜態(tài)變量
#define ?BufSize?10
static ? char ?lpszBuffer[BufSize];
static ? int ?nNumChar? = ? 0 ;
static ? int ?i? = ? 0 ;
static ?POINT?pt;
????……
LRESULT?CALLBACK?WndProc(HWND?hWnd,?UINT?iMsg,?
?????????????????????????UINT?wParam,?
?????????????????????????LONG?lParam)
{
????HDC?hdc;
????PAINTSTRUCT?ps;
????HCURSOR?hCur;
????
switch (iMsg)
????
{
????
case ?WM_CHAR: // 處理非系統(tǒng)鍵的消息
???????? if (wParam? == ?VK_BACK) // 按下退格鍵
???????? {
????????????
if (nNumChar? == ? 0 )
????????????
{
????????????????MessageBox(hWnd,?
" 沒有字符可以刪除! " ,?NULL,?MB_OK);
????????????}

????????????
else
????????????
{
????????????????
-- nNumChar;
????????????????
// 此函數(shù)刷新用戶區(qū),會(huì)產(chǎn)生PAINT消息
????????????????InvalidateRect(hWnd,?NULL,?TRUE);
????????????}

????????????
break ;
????????}

????????
if (nNumChar? >= ?BufSize) // 字符超過緩沖區(qū)大小
???????? {
????????????MessageBox(hWnd,?
" 緩沖區(qū)已滿!刪除字符請(qǐng)用退格鍵 " ,?NULL,?MB_OK);
????????????
break ;
????????}

????????lpszBuffer[nNumChar
++ ]? = ?(unsigned? char )wParam;
????????InvalidateRect(hWnd,?NULL,?TRUE);
????????
break ;
????????
????
case ?WM_PAINT: // 將處理過的字符輸出
????????hdc? = ?BeginPaint(hWnd,? & ps);
????????
// 調(diào)整坐標(biāo)使字出現(xiàn)在鼠標(biāo)上方
?????????TextOut(hdc,?pt.x - 15 ,?pt.y - 15 ,?lpszBuffer,?nNumChar);
????????EndPaint(hWnd,?
& ps);
????????
break ;

????
case ?WM_MOUSEMOVE: // 移動(dòng)鼠標(biāo)后改變文本輸出坐標(biāo)并刷新
????????pt.x? = ?LOWORD(lParam);
????????pt.y?
= ?HIWORD(lParam); // 鼠標(biāo)的坐標(biāo)
????????
// 在不同的區(qū)域顯示不同的光標(biāo)
???????? if (pt.x? < ? 400 ? && ?pt.y? < ? 400 )
????????????hCur?
= ?LoadCursor(NULL,?IDC_NO);
????????
else ? if (pt.x? > ? 400 ? && ?pt.y? < ? 400 )
????????????hCur?
= ?LoadCursor(NULL,?IDC_HELP);
????????
else ? if (pt.x? < ? 400 ? & ?pt.y? > ? 400 )
????????????hCur?
= ?LoadCursor(NULL,?IDC_SIZEALL);
????????
else ? if (pt.x? > 400 ? && ?pt.y? > ? 400 )
????????????hCur?
= ?LoadCursor(NULL,?IDC_CROSS);
????????SetCursor(hCur);
????????InvalidateRect(hWnd,?NULL,?TRUE);
????????
break ;
????
????
case ?WM_DESTROY:
????????PostQuitMessage(
0 );
????????
return ? 0 ;
????
default :
????????
return ?(DefWindowProc(hWnd,?iMsg,?wParam,?lParam));
????}

????
return ? 0 ;
}
posted on 2009-03-12 16:17 Sunshine Alike 閱讀(2689) 評(píng)論(0)  編輯 收藏 引用 所屬分類: WinAPI應(yīng)用程序
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲丝袜av一区| 欧美高清在线视频观看不卡| 久久久久久69| 最新日韩欧美| 亚洲日韩欧美一区二区在线| 亚洲精品三级| 亚洲视频高清| 欧美一区二区在线| 久久综合九色99| 亚洲高清精品中出| 亚洲精品日韩精品| 亚洲制服少妇| 欧美 日韩 国产 一区| 欧美日韩国产bt| 国产日韩精品入口| 亚洲日本va午夜在线影院| 亚洲一区二区三区乱码aⅴ| 久久久国产精品一区二区中文| 亚洲精品在线观| 欧美亚洲三区| 亚洲国产精品视频一区| 亚洲永久在线| 欧美高清视频| 久久久国产精品一区二区中文| 欧美一区二区三区在线看| 老色鬼精品视频在线观看播放| 欧美自拍偷拍午夜视频| 欧美高清视频在线观看| 亚洲私人影吧| 久久综合精品一区| 欧美色综合天天久久综合精品| 国产精品入口福利| 韩国自拍一区| 一本色道久久综合| 91久久中文| 亚洲欧美一区二区激情| 另类亚洲自拍| 亚洲视频精品在线| 欧美亚洲免费电影| 欧美激情欧美激情在线五月| 国产精品高潮呻吟久久av黑人| 国产精品亚洲аv天堂网| 激情五月婷婷综合| 中日韩美女免费视频网址在线观看| 亚洲一区综合| 免费在线成人av| 一本色道婷婷久久欧美| 久久久久久97三级| 国产精品久久久免费| 亚洲第一福利社区| 亚洲欧美怡红院| 欧美影院成人| 亚洲电影成人| 久久国内精品视频| 国产精品v欧美精品v日本精品动漫 | 韩日精品在线| 1024国产精品| 午夜精品在线看| 久久gogo国模啪啪人体图| 亚洲国产精品t66y| 中文一区字幕| 开心色5月久久精品| 亚洲婷婷免费| 欧美人体xx| 亚洲高清不卡在线| 亚洲欧美日本视频在线观看| 欧美伊人久久久久久久久影院| 久久精品官网| 亚洲欧美日韩中文播放| 欧美日韩亚洲国产一区| 亚洲美女av在线播放| 欧美暴力喷水在线| 久久国产精品99国产精| 国产欧美va欧美不卡在线| 亚洲女同精品视频| 亚洲天堂av在线免费| 欧美日韩久久精品| 国内外成人在线视频| 一区二区三区高清视频在线观看| 国产精品超碰97尤物18| 亚洲美女视频网| 亚洲福利久久| 免费在线看成人av| 亚洲国产成人porn| 欧美激情第9页| 欧美成人福利视频| 99成人精品| 中日韩美女免费视频网址在线观看 | 亚洲一区二区三区国产| 免费在线观看一区二区| 亚洲经典在线| 亚洲欧洲一区二区天堂久久| 欧美激情视频在线免费观看 欧美视频免费一 | 免费亚洲婷婷| 国产综合自拍| 欧美凹凸一区二区三区视频| 欧美aⅴ99久久黑人专区| 中日韩高清电影网| 亚洲欧美日韩专区| 国产在线视频欧美一区二区三区| 一区二区冒白浆视频| 一本大道av伊人久久综合| 国产精品黄色| 久久都是精品| 欧美va日韩va| 亚洲欧美区自拍先锋| 久久精品国产在热久久| 亚洲美女av网站| 亚洲综合精品一区二区| 国产一区二区成人| 亚洲国产精品第一区二区| 欧美午夜www高清视频| 在线成人欧美| 一本色道久久88综合日韩精品| 欧美午夜一区| 另类天堂视频在线观看| 欧美视频免费看| 毛片一区二区三区| 欧美视频网站| 免费日韩成人| 国产精品日韩久久久| 蜜桃伊人久久| 国产精品乱码久久久久久| 免费看成人av| 国产欧美一区在线| 亚洲精品1区| 国产精品va| 国产一区二区三区免费不卡 | 欧美黑人在线播放| 国产欧美精品va在线观看| 亚洲福利免费| 韩国av一区二区| 国产精品99久久久久久www| 久久久精品国产一区二区三区| 欧美高清在线一区二区| 欧美一区国产二区| 欧美色中文字幕| 亚洲国产欧美另类丝袜| 国产视频一区在线| 一区二区三区四区五区精品视频| 国产亚洲人成网站在线观看| 日韩五码在线| 99精品久久久| 欧美激情精品久久久久久蜜臀| 久久精品国产欧美亚洲人人爽| 欧美大片免费久久精品三p| 久久夜色精品国产| 国产综合色精品一区二区三区| 久久av一区二区三区亚洲| 久久人人97超碰国产公开结果| 在线观看视频一区二区欧美日韩| 免费观看一级特黄欧美大片| 欧美体内she精视频| 亚洲免费av网站| 日韩视频欧美视频| 蜜桃精品久久久久久久免费影院| 欧美一区影院| 国产欧美日韩一区二区三区| 亚洲女性裸体视频| 欧美夜福利tv在线| 国产日韩专区| 欧美一区二区观看视频| 久久精品国产免费看久久精品| 国产精品女主播一区二区三区| 亚洲精品免费在线| 亚洲视频欧美视频| 国产精品福利在线观看| 亚洲一区二区三区涩| 久久精精品视频| 国产精品成人一区二区三区吃奶 | 亚洲综合色丁香婷婷六月图片| 欧美国产精品一区| 99香蕉国产精品偷在线观看| 亚洲图片欧美一区| 国产精品专区一| 久久精品夜色噜噜亚洲aⅴ| 欧美a级一区二区| 一本一本久久a久久精品综合妖精| 欧美成人午夜剧场免费观看| 亚洲精品乱码久久久久久| 亚洲免费在线看| 国产午夜精品理论片a级大结局| 亚洲图片激情小说| 久久激情视频久久| 日韩视频免费| 国产免费观看久久黄| 亚洲欧美日韩一区| 免费成人高清视频| 一区二区三区久久久| 国产乱子伦一区二区三区国色天香| 亚洲欧美国产精品专区久久| 欧美+日本+国产+在线a∨观看| 亚洲久久视频| 国产欧美日韩视频在线观看| 美女网站在线免费欧美精品| 一本色道久久加勒比精品| 久久露脸国产精品| 一本久久青青| 99精品国产一区二区青青牛奶 | 久久er精品视频|