STATE, 1, 0) ; Sleep (100) ; SendMessage (hButton, BM_SETSTATE, 0, 0) ; }
这样做,用最小的代价,却为HEXCALC的键盘介面增色不少。Sleep函式将程式暂停100毫秒。这会防止按钮被按得太快而让人注意不到。
当WndProc处理WM_COMMAND讯息时,它总是将输入焦点设定给父视窗:
case WM_COMMAND : SetFocus (hwnd) ;
否则,一旦使用滑鼠单击某按钮,输入焦点就会切换到该按钮上。
通用对话方块
Windows的一个主要目的是推动标准的使用者介面。对许多常用的功能表项来说,这推行得很快,几乎所有软体厂商都采用Alt-File-Open选择来打开一个档案。然而,实际的档案开启对话方块却经常各不相同。
从Windows
3.1开始,对这个问题有了一个可行的解决方案,这是一种叫做「通用对话方块程式库」的增强。这个程式库由几个函式组成,这些函式启动标准对话方块来进行打开和储存档案、搜索和替换、选择颜色、选择字体(我将在本章讨论以上的这些内容)以及列印(我将在第十三章讨论)。
为了使用这些函式,您基本上都要初始化某一结构的各个栏位,并将该结构的指标传送给通用对话方块程式库的某个函式,该函式会建立并显示对话方块。当使用者关闭对话方块时,被呼叫的函式将控制权传回给程式,您可以从传送给它的结构中获得资讯。
在使用通用对话方块程式库的任何C原始码档案时,您都需要含入COMMDLG.H表头档案。通用对话方块的文件在/Platform SDK/User
Interface Services/User Input/Common Dialog Box Library中。
增强POPPAD
当我们往第十章的POPPAD中增加功能表时,还有几个标准功能表项没有实作。现在我们已经准备好在POPPAD中加入打开档案、读入档案以及在磁片上储存编辑过档案的功能。在处理中,我们还将在POPPAD中加入字体选择和搜索替换功能。
实作POPPAD3程式的档案如程式11-6所示。
|