您的位置 首页 > 娱乐休闲

VC|创建键盘插入符和字符消息处理

Windows采用的是事件驱动机制,鼠标和键盘是用户与Windows应用程序交互的最主要设备,Windows预先定义了大量的鼠标消息和键盘消息,而MFC也对其中的常用消息进行了封装。

1 键盘消息及其处理

键盘消息有键被按下(WM_KEYDOWN)、键被松开(弹起,WM_KEYUP)和输入字符(WM_CHAR)3种。

在windows中,键盘输入以消息的形式传递给程序的视窗消息处理程序。按下或释放一个按键均会产生一条消息,系统会将其放到与键盘输入窗口相对应的线程消息队伍列中。

2 字符消息处理

当按下一个可显示的字符(数字、字母、标点等)的键时,将先后产生键被按下(WM_KEYDOWN)、键被松开(弹起,WM_KEYUP)和输入字符(WM_CHAR)等3种消息。

MFC将WM_CHAR消息映射为ON_WM_CHAR,其对应的处理函数为OnChar()。

// C

public:

CPoint ptCharacter;//字符位置

// C

CCh5Demo3View::CCh5Demo3View()

{

// TODO: add construction code here

//初始位置设置在(0,0)

;

;

}

void CCh5Demo3View::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)

{

// TODO: Add your message handler code here and/or call default

if(nChar==13)//按下了回车键

{

//换行

;

;

SetCaretPos (ptCharacter);//将插入符移到键入点

ShowCaret ();//显示插入符

}

else

{

CClientDC dc(this);

HideCaret ();//隐藏插入符

dc.TextOu,(LPCTSTR)&nChar);//显示字符

CSize textsize;

textsize=dc.GetTextExtent((LPCTSTR)&nChar);//获取当前字符大小

//前进到下一个字符位置

;

SetCaretPos (ptCharacter);//将插入符移到键入点

ShowCaret ();//显示插入符

}

CView::OnChar(nChar, nRepCnt, nFlags);

}

3 创建键盘插入符

键盘插入符(Caret)是一个闪烁的位图(通常是一个细的垂直杠),需要定位到字符将要输入和显示的位置。键盘插入符可以使用户知道在窗口何处可进行有效的键盘输入。

void CCh5Demo3View::OnSetFocus(CWnd* pOldWnd)

{

CView::OnSetFocus(pOldWnd);

// TODO: Add your message handler code here

CreateSolidCaret(4, 20);//创建插入符

SetCaretPos (ptCharacter);//将插入符移到鼠标点

ShowCaret ();//显示插入符

}

-End-

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“mfc如何插入位图”边界阅读