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

Sunshine Alike

半完美主義

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

常用鏈接

留言簿(15)

積分與排名

  • 積分 - 51367
  • 排名 - 451

最新隨筆

最新評論

鍵盤和鼠標在 windows 中的重要性不必多說,地球人都知道!鍵盤上每一個有意義的鍵都對應著一個唯一的標識值,稱之為掃描碼。但是這種掃描碼是硬件相關的,為了實現設備無關性的要求,在 windows 應用程序中,使用的往往是與設備無關的虛擬碼

對鍵盤操作的響應過程基本如下:

用戶按下一個鍵時,與鍵盤驅動程序( KEYBOARD.DRV )進行中斷處理并調用 windows 用戶模塊( USER.EXE )中的有關程序來生成鍵盤消息,然后消息被發送到系統的消息隊列中由相應的應用應用程序進行處理。鼠標的處理過程與鍵盤類似。但是注意無論是鼠標還是鍵盤的所產生的消息經過操作系統處理后都只會被發送給特定的窗口,即具有“輸入焦點”的窗口來進行處理。

?

??????????? 鍵盤消息
鍵盤消息通常可分為按鍵消息和字符消息兩類,用戶按下或松開一個鍵時,就產生一個按鍵消息,當一個按鍵組合產生了一個可以顯示的字條時,就產生了一個字符消息。

按鍵消息一般又可以分為系統按鍵和非系統按鍵。

系統按鍵:是指使用了 Alt 等與相關輸入鍵組成產生的消息,一般這些消息都由操作系統內部直接處理。如果應用程序處理了這些系統鍵消息,就要調用 DefWindowProc 函數,以便不影響 windows 對它們的處理。

非系統按鍵:對應于那些不使用組合鍵的按鍵消息。

?

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

1.???????? wParam
包含了識別按下鍵的虛鍵碼,這些碼是由系統定義的設備無關的。可以在 windows.h 中找到找到相關定義。

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

(1)????? 重復計數位( 0~15 位) ?????

表示當前消息的重復次數。

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

OEM 掃描碼是鍵盤發送的碼值,因為是設備相關的幫一般被忽略掉。

(3)????? 擴展鍵標志( 24 位)

在有 Alt Ctrl 鍵按下時為 1, 否則為 0

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

系統保留,一般不用。

(5)????? 關聯碼( 29 位)

主要用來記錄某鍵與 Alt 等鍵的組合狀態,若按下 Alt 鍵,當 WM_SYSKEYDOWN 消息發送到某個激活窗口時,其值為 1, 否則為 0

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

用于記錄先前某鍵的狀態。

(7)????? 轉換狀態( 31 位)

用于記錄被始終按下的某鍵所產生的消息。

?

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

?

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

?

??????????? 鼠標消息

1.???????? 鼠標操作

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

在鼠標消息中,參數 lParam 包含了鼠標的位置,低字節是 X 坐標,高字節是 Y 坐標。參數 wParam 則包含了一個指示各種虛鍵狀態的值。

通過用戶區消息的 wParam lParam 參數,程序員就可以確定鼠標的位置和狀態。

對于鼠標的消息處理,一般分為兩種,一種要對 Ctrl 等鍵進行監視,另一種則不需要。下面是一個示例

case WM_LbUTTONDWON:?????? // 鼠標按下時 ctrl shift 都被按下

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

??????

?????? break;

case WM_LBUTTONDOWN:?????? // 不監視組合按鍵

??????

?????? break;

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

2.???????? 光標

可以使用系統光標或者調用 LoadCursor 加載自定義光標資源

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

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

// 定義的靜態變量
#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: // 處理非系統鍵的消息
???????? if (wParam? == ?VK_BACK) // 按下退格鍵
???????? {
????????????
if (nNumChar? == ? 0 )
????????????
{
????????????????MessageBox(hWnd,?
" 沒有字符可以刪除! " ,?NULL,?MB_OK);
????????????}

????????????
else
????????????
{
????????????????
-- nNumChar;
????????????????
// 此函數刷新用戶區,會產生PAINT消息
????????????????InvalidateRect(hWnd,?NULL,?TRUE);
????????????}

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

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

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

????
case ?WM_MOUSEMOVE: // 移動鼠標后改變文本輸出坐標并刷新
????????pt.x? = ?LOWORD(lParam);
????????pt.y?
= ?HIWORD(lParam); // 鼠標的坐標
????????
// 在不同的區域顯示不同的光標
???????? 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 閱讀(2692) 評論(0)  編輯 收藏 引用 所屬分類: WinAPI應用程序
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲特级毛片| 亚洲深夜激情| 免费久久99精品国产| 极品少妇一区二区三区| 久久精品国产亚洲精品| 欧美一区二区| 1024日韩| 亚洲国产高潮在线观看| 欧美二区在线看| 日韩一级免费| 亚洲少妇在线| 国产香蕉久久精品综合网| 久久久久久久久久久一区 | 亚洲日产国产精品| 亚洲欧洲日韩在线| 欧美视频日韩视频| 久久岛国电影| 欧美成人高清视频| 亚洲综合电影| 久久久精品国产99久久精品芒果| 国内精品模特av私拍在线观看| 久久人人97超碰国产公开结果| 久久女同精品一区二区| 日韩视频一区二区三区在线播放| 中国日韩欧美久久久久久久久| 国产亚洲欧美另类中文| 欧美国产日韩a欧美在线观看| 欧美日韩国产精品一区| 欧美一区在线直播| 欧美成人精品在线| 欧美一区二区三区在线观看| 久久久噜噜噜久久狠狠50岁| 一区二区三区久久网| 欧美一区二区精品| 亚洲国产小视频在线观看| 中文在线资源观看网站视频免费不卡 | 欧美在线播放视频| 免费高清在线一区| 西瓜成人精品人成网站| 欧美成人日本| 久久精视频免费在线久久完整在线看| 欧美成人免费一级人片100| 香蕉乱码成人久久天堂爱免费| 久久亚洲春色中文字幕| 欧美影院精品一区| 欧美日韩视频在线一区二区观看视频 | 欧美日韩亚洲综合一区| 久久综合电影| 国产精品视频久久久| 欧美激情一区二区三区在线视频| 国产精品美女久久久久av超清| 欧美高清日韩| 黄色小说综合网站| 亚洲男女自偷自拍| 亚洲男人天堂2024| 欧美激情精品久久久| 麻豆精品91| 国内成+人亚洲+欧美+综合在线| 在线一区二区三区四区五区| 日韩午夜电影av| 免费日韩av片| 欧美成人综合在线| 亚洲第一区在线观看| 午夜伦欧美伦电影理论片| 亚洲欧美激情精品一区二区| 欧美精品粉嫩高潮一区二区 | 亚洲精品色图| 久久天天躁狠狠躁夜夜爽蜜月 | 在线观看视频亚洲| 久久久999精品| 裸体一区二区三区| 国内免费精品永久在线视频| 欧美一区二区三区视频在线观看| 欧美一区国产在线| 国产一区二区三区高清| 性色av香蕉一区二区| 久久久久久久性| 国产一区91| 久久精品夜色噜噜亚洲a∨| 久热re这里精品视频在线6| 狠狠久久亚洲欧美| 美女任你摸久久| 亚洲国产裸拍裸体视频在线观看乱了| 在线观看久久av| 欧美成人精品福利| 一本色道久久综合狠狠躁篇怎么玩| 亚洲精品午夜| 国产精品第十页| 亚洲欧美大片| 麻豆精品91| 亚洲乱码久久| 国产精品久久国产三级国电话系列 | 激情六月婷婷久久| 欧美大片在线看| 亚洲视频一区二区| 久久亚洲精品一区二区| 亚洲日本一区二区| 国产精品成人一区二区网站软件| 亚洲一区二区视频在线观看| 久久久久久有精品国产| 亚洲黄页一区| 国产精品萝li| 久久视频这里只有精品| 日韩一级黄色片| 久久精品观看| 日韩视频免费观看| 国产欧美日韩不卡| 欧美成人一区二区三区| 亚洲自拍偷拍一区| 欧美高潮视频| 欧美一区二区成人| 亚洲美女尤物影院| 国产日韩精品一区二区三区| 欧美大色视频| 欧美一区二粉嫩精品国产一线天| 亚洲国产精品久久精品怡红院| 亚洲免费在线| 日韩视频精品| 狠色狠色综合久久| 欧美日韩亚洲一区三区| 久久精品一区四区| 制服丝袜亚洲播放| 欧美久久精品午夜青青大伊人| 亚洲色诱最新| 亚洲精品美女久久7777777| 久久精品亚洲乱码伦伦中文 | 国产精品福利久久久| 久久久久久久国产| 午夜精品在线看| 中文国产一区| 亚洲麻豆一区| 欧美黑人在线观看| 久久在线观看视频| 欧美在线关看| 午夜久久tv| 在线视频一区二区| 日韩视频不卡| 亚洲精品日本| 亚洲欧洲另类| 91久久久久久国产精品| 在线看一区二区| 在线精品视频一区二区三四| 国产午夜精品全部视频播放 | 欧美在线首页| 欧美在线黄色| 欧美在线视频播放| 欧美一区二区黄色| 欧美在线观看一区二区三区| 亚洲女优在线| 性高湖久久久久久久久| 翔田千里一区二区| 亚洲欧美日韩在线高清直播| 亚洲伊人久久综合| 亚洲欧美在线一区二区| 午夜精品99久久免费| 午夜日本精品| 久久久91精品国产一区二区三区 | 鲁大师成人一区二区三区| 久久亚洲影院| 欧美国产精品日韩| 91久久香蕉国产日韩欧美9色 | 亚洲一区二区三区精品在线观看 | 国产亚洲亚洲| 伊人久久亚洲影院| 亚洲高清毛片| 亚洲精品影视在线观看| 99精品国产在热久久婷婷| 这里只有精品视频| 午夜精品视频在线| 老司机午夜免费精品视频 | 夜夜嗨av色一区二区不卡| 一本色道久久综合亚洲精品婷婷| 在线亚洲美日韩| 欧美在线观看www| 免费人成精品欧美精品| 亚洲三级国产| 亚洲一区影院| 久久野战av| 国产精品啊v在线| 国产日韩欧美在线一区| 在线免费观看日韩欧美| 中国av一区| 久久久亚洲高清| 亚洲欧洲精品天堂一级| 亚洲一区二区三区免费视频| 久久国产欧美精品| 欧美日韩精品免费看| 国产一区二区三区四区五区美女| 亚洲国产视频一区| 欧美一区国产一区| 亚洲高清网站| 欧美影院视频| 欧美视频中文一区二区三区在线观看 | 亚洲在线1234| 欧美成人免费全部观看天天性色| 国产精品日韩专区| 亚洲精品一区二区在线| 久久久精品999| 夜夜嗨av一区二区三区网站四季av| 性视频1819p久久|