C语言调用WIN32 API学习之6鼠标与键盘响应
前幾節(jié)學習了基本控件的創(chuàng)建,下面學習下鼠標與鍵盤的響應
1,打開VC++6.0,點擊 文件->打開工作空間 選擇example1,點擊確定,打開工程。
2,更改代碼如下:
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)//回調(diào)函數(shù)定義
{
int nTextLength;
TCHAR sztextC[1024];
switch(uMsg)
{
case WM_CREATE:
button1=CreateWindow("BUTTON","第一個按鍵",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_PUSHBUTTON,10,10,100,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//創(chuàng)建按鍵
checkBox1=CreateWindow("BUTTON","第一個復選框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_AUTOCHECKBOX,10,50,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//創(chuàng)建復選框
checkBox2=CreateWindow("BUTTON","第二個復選框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_AUTOCHECKBOX,10,100,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//創(chuàng)建復選框
radioBox1=CreateWindow("BUTTON","第一個單選框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_RADIOBUTTON,10,150,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//創(chuàng)建單選框
radioBox2=CreateWindow("BUTTON","第二個單選框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_RADIOBUTTON,10,200,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//創(chuàng)建單選框
textBox1=CreateWindow("EDIT","第一個文本框",WS_VISIBLE|WS_CHILD|WS_BORDER|ES_MULTILINE|ES_WANTRETURN,10,250,150,100,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//創(chuàng)建文本框
break;
case WM_LBUTTONDOWN:
MessageBox(NULL,"鼠標左鍵被按下","提示",MB_OK);//彈出提示窗體
break;
case WM_RBUTTONDOWN:
MessageBox(NULL,"鼠標右鍵被按下","提示",MB_OK);//彈出提示窗體
break;
case WM_LBUTTONUP:
MessageBox(NULL,"鼠標左鍵彈起","提示",MB_OK);//彈出提示窗體
break;
case WM_RBUTTONUP:
MessageBox(NULL,"鼠標右鍵彈起","提示",MB_OK);//彈出提示窗體
break;
case WM_LBUTTONDBLCLK:
MessageBox(NULL,"鼠標左鍵雙擊","提示",MB_OK);//彈出提示窗體
break;
case WM_RBUTTONDBLCLK:
MessageBox(NULL,"鼠標右鍵雙擊","提示",MB_OK);//彈出提示窗體
break;
case WM_KEYDOWN:
switch(wParam)
{
case 0x41:
MessageBox(NULL,"A被按下","提示",MB_OK);//彈出提示窗體
break;
case 0x42:
MessageBox(NULL,"B被按下","提示",MB_OK);//彈出提示窗體
break;
case 0x43:
MessageBox(NULL,"C被按下","提示",MB_OK);//彈出提示窗體
break;
case 0x44:
MessageBox(NULL,"D被按下","提示",MB_OK);//彈出提示窗體
break;
}
break;
case WM_COMMAND:
if((HWND)lParam==button1)//判斷消息是否來自按鍵
{
nTextLength=GetWindowTextLength(textBox1);//讀取edit長度
GetWindowText(textBox1,sztextC,nTextLength+1);//讀取edit text
MessageBox(NULL,sztextC,"提示",MB_OK);//彈出提示窗體
}
if(((HWND)lParam) == checkBox1)
{
checkBoxValve=(int)SendMessage(checkBox1,BM_GETCHECK,0,0);
if(checkBoxValve)
MessageBox(NULL,"復選框1被選擇","提示",MB_OK);//彈出提示窗體
else
MessageBox(NULL,"復選框1被取消選擇","提示",MB_OK);//彈出提示窗體
}
if(((HWND)lParam) == checkBox2)
{
checkBoxValve=(int)SendMessage(checkBox2,BM_GETCHECK,0,0);
if(checkBoxValve)
MessageBox(NULL,"復選框2被選擇","提示",MB_OK);//彈出提示窗體
else
MessageBox(NULL,"復選框2被取消選擇","提示",MB_OK);//彈出提示窗體
}
if(((HWND)lParam) == radioBox1)
{
SendMessage(radioBox1,BM_SETCHECK,1,0);
SendMessage(radioBox2,BM_SETCHECK,0,0);
MessageBox(NULL,"單選框1被選擇","提示",MB_OK);//彈出提示窗體
}
if(((HWND)lParam) == radioBox2)
{
SendMessage(radioBox1,BM_SETCHECK,0,0);
SendMessage(radioBox2,BM_SETCHECK,1,0);
MessageBox(NULL,"單選框2被選擇","提示",MB_OK);//彈出提示窗體
}
break;
case WM_DESTROY://關閉窗口是系統(tǒng)發(fā)送的消息
PostQuitMessage(0);//發(fā)送退出消息GetMessage收到消息后將return 0,主函數(shù)退出消息循環(huán)
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);//不處理的消息交給系統(tǒng)處理。
}
return 0;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/xch565336686/p/6774472.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的C语言调用WIN32 API学习之6鼠标与键盘响应的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android开发—智能家居系列】(一
- 下一篇: ------------ 异常笔记