cocos2dx 在windows上实现键盘输入(2)
来源:未知 责任编辑:责任编辑 发表时间:2013-12-18 11:33 点击:次
p>
p>windows sdk 键盘输入:
p>因为大多数的PC只有一个键盘,所以所有运行中的WINDOWS程序必须共用它。WINDOWS 将负责把击键消息送到具有输入焦点的那个应用程序中去。尽管屏幕上可能同时有几个应用程序窗口,但一个时刻仅有一个窗口有输入焦点。有输入焦点的那个应用程序的标题条总是高亮度显示的。 实际上您可以从两个角度来看键盘消息:一是您可以把它看成是一大堆的按键消息的集合,在这种情况下,当您按下一个键时,WINDOWS就会发送一个WM_KEYDOWN给有输入焦点的那个应用程序,提醒它有一个键被按下。当您释放键时,WINDOWS又会发送一个WM_KYEUP消息,告诉有一个键被释放。您把每一个键当成是一个按钮;另一种情况是:您可以把键盘看成是字符输入设备。当您按下“a”键时,WINDOWS发送一个WM_CHAR消息给有输入焦点的应用程序,告诉它“a”键被按下。实际上WINDOWS 内部发送WM_KEYDOWN和WWM_KEYUP消息给有输入焦点的应用程序,而这些消息将通过调用TranslateMessage翻译成WM_CHAR消息。WINDOWS窗口过程函数将决定是否处理所收到的消息,一般说来您不大会去处理WM_KEYDOWN、WM_KEYUP消息,在消息循环中TranslateMessage函数会把上述消息转换成WM_CHAR消息。在我们的课程中将只处理WM_CHAR。
p>例子: (见光盘FirstWindow4)
p>#include "Windows.h"
p>#include "tchar.h"
p>
p>HWND hWinMain;
p>TCHAR szClassName[] = _T("MyClass");
p>TCHAR szCaptionMain[] = _T("My First Window!");
p>TCHAR FontName[] = _T("script");
p>WNDCLASSEX stdWndClass;
p>WPARAM keyChar = 0x20; //0x20是空格的ascii码,保证没有按键的时候程序正常显示。
p>LRESULT CALLBACK ProcWinMain( HWND hWnd,
p> UINT Msg,
p> WPARAM wParam,
p> LPARAM lParam
p>)
p>{
p> PAINTSTRUCT stPs;
p> HDC hDC;
p> HFONT hFont,hOldFont;
p> switch(Msg)
p> {
p> case WM_PAINT:
p> {
p> hDC = BeginPaint(hWnd,&stPs);
p> hFont = CreateFont(24,16,0,0,400,0,0,0,OEM_CHARSET,OUT_DEFAULT_PRECIS,
p> CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH | FF_SCRIPT,FontName);
p>
p> hOldFont = (HFONT)SelectObject(hDC,hFont);
p> SetTextColor(hDC,RGB(200,200,50));
p> SetBkColor(hDC,RGB(0,0,255));
p> TextOut(hDC,0,0,(char *)&keyChar,1);
p> SelectObject(hDC,hOldFont);
p> EndPaint(hWnd,&stPs);
p> }
p> break;
p>
p> case WM_CHAR:
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>