VS2005鼠标键盘事件(0814)

本文介绍了一个简单的Windows应用,通过键盘输入收集数据,并实时在窗口中显示文本。应用包括读取击键、存储数据、文本绘制、光标显示及基本交互功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

从键盘读取输入

创建单窗口项目

为键盘数据创建存储区——为doc类增加CString类

class CkeyboardDoc : public CDocument

{

protected: // 仅从序列化创建

     CkeyboardDoc();

     DECLARE_DYNCREATE(CkeyboardDoc)

    CString StringData;

 

CkeyboardDoc::CkeyboardDoc()

{

     // TODO: 在此添加一次性构造代码

    StringData = "";

}

读取击键——为view类添加事件WM_CHAR

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

{

     // TODO: 在此添加消息处理程序代码和/或调用默认值

 

    CkeyboardDoc *pDoc = GetDocument();

    ASSERT_VALID(pDoc);

    pDoc->StringData += (char)nChar;

    Invalidate();

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

}

 

void CkeyboardView::OnDraw(CDC* /*pDC*/)

{

     CkeyboardDoc* pDoc = GetDocument();

     ASSERT_VALID(pDoc);

     if (!pDoc)

         return;

 

     // TODO: 在此处为本机数据添加绘制代码

    pDC->TextOut(0,0,pDoc->StringData);

}

在窗口中间显示文本

     CRect rect;

     GetWindowRect(&rect);

     int x = rect.Width()/2;

     int y = rect.Height()/2;

 

     CSize size = pDC->GetTextExtent(pDoc->StringData);

     x -= size.cx/2;

     y -= size.cy/2;

 

     pDC->TextOutW(x,y,pDoc->StringData);

显示光标

         TEXTMETRIC textmetric;

         pDC->GetTextMetrics(&textmetric);

         CreateSolidCaret(textmetric.tmAveCharWidth/8,textmetric.tmHeight);

 

         CaretPosition.x = CaretPosition.y = 0;

         SetCaretPos(CaretPosition);

         ShowCaret();

移动光标

     pDC->TextOut(0,0,pDoc->StringData);

 

     CSize size = pDC->GetTextExtent(pDoc->StringData);

     HideCaret();

     CaretPosition.x = size.cx;

     SetCaretPos(CaretPosition);

     ShowCaret();

获取/失去焦点

         View类添加WM_KILLFOCUS/WM_SETFOCUS事件

鼠标事件

         View类添加WM_LBUTTONDOWN事件

void CkeyboardView::OnLButtonDown(UINT nFlags, CPoint point)

{

     x = point.x;

     y = point.y;

 

     CkeyboardDoc *pDoc = GetDocument();

     ASSERT_VALID (pDoc);

     pDoc->StringData.Empty();

     Invalidate();

     ……

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值