📄 untitled-07.txt
字号:
个NULL画刷选人了设备描述表:
pDC->S616Ctst0Ckobj6Ct(NULL.BRUSH);
这就防止了0的内部被设备描述表的默认白色画刷填充。(另外,还可以创建一个颜
色与窗口背景色匹配的画刷并将其选进设备描述表中。但是由于不产生实际的屏幕输出,
用一个NULL画刷绘图会稍微快些。)然后用如下语句绘出0:
CRect rect=。rcsquares["Pos」;
rect.DeflateRect(16,16);
pDC-> Ellipse(rect);
第一个语句将代表网格的矩形拷贝到名为 rect的本地 CRect对象;第二句使用 CRect::
DeflateRect在每个方向上都将矩形“缩小”到16像素,形成圆的边框;第三句画圆。输出结果
就是居于网格中心的一个漂亮的0形。
双击分隔网格的网格线会清除X及0,开始新的一局。无可否认这样设计用户接口不
是一个好方法,但它却提供了编写双击处理程序的一个机会。(更好的方法是添加一个“重
新开局”按钮或“重新开局”菜单项,但是由于我们还没有涉及到菜单和控件,所以不得不等
一段时间才能制作出完美的用户接口。)双击鼠标左键的事件由 CMainwindow:: onLButton
DblClk处理,其中包含如下简单的语句:
CCllentDC dc(this);
。f(dc.GetP。xel(po。nt)==RGB (,0,0》
eesetGame();
为了判断双击是否发生在用来分隔棋盘网格的黑色粗线上,onLButtonDblClk将调用
CDC:: GetPixel来获得光标下像素的颜色,把它与黑色( RGB(o, o, o》做比较。如果匹配,则
ResetGame将被调用来重新设置游戏。否则,OnLButtonDhlClk返回,双击被忽略。对于快速
检测不规则的形状区域,检测光标下像素的颜色是一种有效的技术,但是要慎重选用那些非
基本色,显示驱动程序可能会使这些颜色发生抖动。因为所有运行Wind。ws的PC机都支持
纯黑(RGB(0,0,0》和纯白(RGB(255,255,255))色,所以可以断定这些颜色不会抖动。
要与已有的用户接口指南取得一致,应用程序就不应该像TicTac那样,使用鼠标右键执
行应用程序中特定的任务。相反,应该弹出上下文菜单来响应鼠标右键单击。在WM.
RBUTh0NUP消息被传递给系统进行默认处理之后,Windows将把一个WM_CONTEXTMENU
消息放在消息队列中。下一章您将学到更多与此有关的操作系统的特性。
消息框
在返回之前,TicTac的onLButtonDown和OnRButtonDown处理程序将调用CMainwindow
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -