Establishment of the hot key...

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

WM_HOTKEY并不包含在Class Wizard中,如果要设置这个消息,必须手工添加。假设Project的名字是Temp,那么操作如下:

1、在TempView.h文件中消息映射的说明处加入热键消息处理函数的声明。

//{{AFX_MSG(CTempView)

afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnDestroy();

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);

afx_msg void OnKillFocus(CWnd* pNewWnd);

afx_msg void OnMouseMove(UINT nFlags, CPoint point);

afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

//}}AFX_MSG

LRESULT OnHotKey(WPARAM wParam,LPARAM lParam);//此句为加入内容,声明热键消息处理函数。

DECLARE_MESSAGE_MAP()

2、 接着在TempView.cpp中消息映射的定义处是用消息映射宏指定热键消息WM_HOTKEY的消息处理函数。

BEGIN_MESSAGE_MAP(CTempView, CView)

//{{AFX_MSG_MAP(CTempView)

ON_WM_CHAR()

ON_WM_DESTROY()

ON_WM_CREATE()

ON_WM_KEYDOWN()

ON_WM_KEYUP()

ON_WM_HSCROLL()

ON_WM_KILLFOCUS()

ON_WM_MOUSEMOVE()

ON_WM_LBUTTONUP()

//}}AFX_MSG_MAP

ON_MESSAGE(WM_HOTKEY,OnHotKey) //此句为手工加入内容,指定了热键消息的处理函数。

END_MESSAGE_MAP()

3、在 OnCreate()函数中登记热键[*]。

int CTempView::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CView::OnCreate(lpCreateStruct) == -1)

return -1;

// TODO: Add your specialized creation code here

::RegisterHotKey(m_hWnd,1001,MOD_CONTROL|MOD_ALT,'*');//登记热键

return 0;

}

4、在TempView.cpp中编写OnHotKey()函数,当按下热键[*]时程序变为前台,并跳出一个消息框。

LRESULT CTempView::OnHotKey(WPARAM wParam,LPARAM lParam)

{

if(wParam==1001)

MessageBox("I have been activated!!");

return 0;

}

5、注销热键,释放系统资源.

void CTempView::OnDestroy()

{

CView::OnDestroy();

// TODO: Add your message handler code here

UnregisterHotKey(m_hWnd,1001);//注销热键,释放系统资源.

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航