设为首页 加入收藏

TOP

键盘(六十一)
2010-12-30 21:11:33 】 浏览:47256
Tags:键盘
;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}

为了简单起见,TYPER程式使用一种等宽字体,因为编写处理调和字体的文字编辑器要困难得多。程式在好几个地方取得装置内容:在WM_CREATE讯息处理期间,在WM_KEYDOWN讯息处理期间,在WM_CHAR讯息处理期间以及在WM_PAINT讯息处理期间,每次都通过GetStockObject和SelectObject呼叫来选择等宽字体。

在WM_SIZE讯息处理期间,TYPER计算视窗的字元宽度和高度并把值保存在cxBuffer和cyBuffer变数中,然後使用malloc分配缓冲区以保存在视窗内输入的所有字元。注意,缓冲区的位元组大小取决於cxBuffer、cyBuffer和sizeof(TCHAR),它可以是1或2,这依赖於程式是以8位元的字元处理还是以Unicode方式编译的。

xCaret和yCaret变数保存插入符号位置。在WM_SETFOCUS讯息处理期间,TYPER呼叫CreateCaret来建立与字元有相同宽度和高度的插入符号,呼叫SetCaretPos来设定插入符号的位置,呼叫ShowCaret使插入符号可见。在WM_KILLFOCUS讯息处理期间,TYPER呼叫HideCaret和DestroyCaret。

对WM_KEYDOWN的处理大多要涉及游标移动键。Home和End把插入符号送至一行的开始和末尾处,Page Up和Page Down把插入符号送至视窗的顶端和底部,箭头的用法不变。对Delete键,TYPER将缓冲区中从插入符号之後的那个位置开始到行尾的所有内容向前移动,并在行尾显示空格。

WM_CHAR处理Backspace、Tab、Linefeed(Ctrl-Enter)、Enter、Escape和字元键。注意,在处理WM_CHAR讯息时(假设使用者输入的每个字元都非常重要),我使用了lParam中的重复计数;而在处理WM_KEYDOWN讯息时却不这么作(避免有害的重复卷动)。对Backspace和Tab的处理由於使用了SendMessage函式而得到简化,Backspace与Delete做法相仿,而Tab则如同输入了若干个空

首页 上一页 58 59 60 61 下一页 尾页 61/61/61
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇滑鼠 下一篇图形基础

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目