ctObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ; SetTextColor (hdc, GetSysColor (COLOR_BTNTEXT)) ; SetBkColor (hdc, GetSysColor (COLOR_BTNFACE)) ;
// Assume the file is ASCII
DrawTextA (hdc, buffer, i, &rect, DTFLAGS) ;
EndPaint (hwnd, &ps) ; return 0 ; case WM_DESTROY : PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } LRESULT CALLBACK ListProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { if (message == WM_KEYDOWN && wParam == VK_RETURN) SendMessage (GetParent (hwnd), WM_COMMAND, MAKELONG (1, LBN_DBLCLK), (LPARAM) hwnd) ; return CallWindowProc (OldList, hwnd, message, wParam, lParam) ; }
在ENVIRON中,当我们选择一个环境变数时-无论是使用滑鼠还是键盘-程式都将显示一个环境字串。但是,如果我们在HEAD中使用这种选择显示方法,那么程式回应会很慢,这是因为在清单方块中移动选择时,程式仍然要不断地打开和关闭档案。然而,HEAD要求档案或者子目录被双击,从而引起一些问题,这是因为清单方块控制项没有滑鼠双击的自动键盘介面。前面讲过,如果可能,应该尽量提供键盘介面。
解决的方法是什么呢?当然是视窗子类别化。HEAD中的清单方块子类则函式叫做ListProc,它寻找wParam参数等於VK_RETURN的WM_KEYDOWN讯息,并给其父视窗发送一条带有LBN_DBLCLK通知码的WM_COMMAND讯息。在WndProc中,对WM_COMMAND的处理使用了Windows函式的CreateFile来检查清单方块中的选择。如果CreateFile传回一个错误资讯,则表 |