WEB开发网
开发学院软件开发VC VC中查找窗体的OnKeyDown事件的过程 阅读

VC中查找窗体的OnKeyDown事件的过程

 2008-11-13 19:32:31 来源:WEB开发网   
核心提示:首先我知道VC中通过CreateWindow来创建一个窗体,那么就从MSDN中查找CreateWindow()函数,VC中查找窗体的OnKeyDown事件的过程,得到地址:ms-help://MS.MSDNQTR.2003FEB.2052/winui/winui/windowsuserinterface/windowi

首先我知道VC中通过CreateWindow来创建一个窗体,那么就从MSDN中查找CreateWindow()函数,得到地址:

ms-help://MS.MSDNQTR.2003FEB.2052/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/createwindow.htm。

HWND CreateWindow(   
  LPCTSTR lpClassName,
  LPCTSTR lpWindowName,
  DWORD dwStyle,
  int x,
  int y,
  int nWidth,
  int nHeight,
  HWND hWndParent,
  HMENU hMenu,
  HINSTANCE hInstance,
  LPVOID lpParam
);

那么,我的窗体的消息处理过程在哪呢?lpClassName的说明中,告诉我们另外一个函数:RegisterClass(),那就看看Register的说明吧:

ATOM RegisterClass(   
  CONST WNDCLASS *lpWndClass
);

WNDCLASS又是什么呢?

typedef struct {
  UINT style;
  WNDPROC lpfnWndProc;
  int cbClsExtra;
  int cbWndExtra;
  HINSTANCE hInstance;
  HICON hIcon;
  HCURSOR hCursor;
  HBRUSH hbrBackground;
  LPCTSTR lpszMenuName;
  LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;

lpfnWndProc 的说明:

指向窗口处理过程。你必须使用CallWindowProc来调用窗口处理过程,更多信息,参见WindowProc。

所以,让我们来看看CallWindowProc吧:

LRESULT CallWindowProc(   
  WNDPROC lpPrevWndFunc,
  HWND hWnd,
  UINT Msg,
  WPARAM wParam,
  LPARAM lParam
);

通过说明,我们可以看到CallWindowProc通常用来指定子窗体的消息处理过程。不过有示例:Subclassing a window。点开一看标题是Using Window Procdures,呵呵,这个过程挺详细的:

ms-help://MS.MSDNQTR.2003FEB.2052/winui/winui/windowsuserinterface/windowing/windowprocedures/usingwindowprocedures.htm。

再看看WindowProc:

LRESULT CALLBACK WindowProc(   
  HWND hwnd,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam
);

这就是你需要定义的消息处理函数的格式。

不过,目前还是没有找到按键的消息如何处理。然后尝试在索引中找message,message object等等都不是,UINT也看了一下没有。记得有WM_之类的,然后尝试,看了看,好像都是基于MFC的吧,有点想放弃,但看到了WM_PAINT,想这个应该没有使用MFC时也见过吧,抱着一线希望,输入WM_K……,哈哈,看到了WM_KEYDOWN,点击查看Windows Management中的WM_KEYDOWN Notification():

ms-help://MS.MSDNQTR.2003FEB.2052/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_keydown.htm,这个的标题是WM_KEYDOWN Notification。

WM_KEYDOWN

WPARAM wParam

LPARAM lParam;

看看WM_KEYDOWN,你是否明白了一些呢,反正我是。

尤其看到See Also中的Keybord Input Preview后,感觉自己的Win32编程确实太差了,该赶快学习学习了。

Tags:VC 查找 窗体

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接