📄 00000004.htm
字号:
2.2 主窗口过程 <BR> 主窗口过程实际是一个回调函数,一般由 DispatchMessage 函数调用, <BR>用来处理应用的消息。主窗口过程一般如下定义: <BR> <BR>int TestMainWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam) <BR>{ <BR> HDC hdc; <BR> int x, y; <BR> RECT client; <BR> static BITMAP bitmap; <BR> static BOOL fValid = FALSE; <BR> static int paintCount = 0; <BR> <BR> switch (message) { <BR> case MSG_CREATE: <BR> SetTimer (hWnd, 100, 20); <BR> if(LoadBitmap(&bitmap, "res/mnls.bmp") < 0) <BR> fprintf (stderr, "Test Main Win: Loading bitmap failure!\n"); <BR> else <BR> fValid = TRUE; <BR> break; <BR> <BR> case MSG_PAINT: <BR> hdc = BeginPaint (hWnd); <BR> testdc (hdc, fValid?&bitmap:NULL); <BR> EndPaint (hWnd, hdc); <BR> break; <BR> <BR> case MSG_LBUTTONDBLCLK: <BR> hdc = GetClientDC (hWnd); <BR> TextOut(hdc, 0, 0, "Left button double clicked"); <BR> ReleaseDC (hdc); <BR> PostMessage (hWnd, MSG_CLOSE, 0, 0); <BR> return 0; <BR> <BR> case MSG_TIMER: <BR> if (ISINBACKGROUND) <BR> break; <BR> paintCount++; <BR> if (paintCount % 10 != 0) { <BR> hdc = GetClientDC (hWnd); <BR> GetClientRect (hWnd, &client); <BR> x = random() % (RECTW (client)); <BR> y = random() % (RECTH (client)); <BR> SetBrushColor(hdc, RGB2Index (hdc, random() % 256, <BR> random() % 256, <BR> random() % 256)); <BR> FillBox(hdc, x, y, random() % RECTW (client), <BR> random() % RECTH (client)); <BR> ReleaseDC (hdc); <BR> } <BR> else <BR> InvalidateRect (hWnd, NULL, FALSE); <BR> break; <BR> <BR> case MSG_CLOSE: <BR> KillTimer (hWnd, 100); <BR> UnloadBitmap (&bitmap); <BR> DestroyMainWindow (hWnd); <BR> PostQuitMessage (hWnd); <BR> return 0; <BR> } <BR> <BR> return DefaultMainWinProc(hWnd, message, wParam, lParam); <BR>} <BR> <BR> 主窗口有四个入口参数,分别是消息的目标窗口句柄、消息、消息的 <BR>WPARAM (即unsigned int) 型参数和 LPARAM (即long int) 型参数。在 <BR>32 位系统中,消息的两个参数实际是等长度的。 <BR> <BR> 主窗口的窗口过程处理应用感兴趣的消息,将其他消息传递给 <BR>DefaultMainWindProc 函数处理。 <BR> <BR>2.3 桌面的应用项目接口 <BR> 当用户在桌面上单击鼠标右键时可弹出浮动式菜单,应用项目可通过 <BR>桌面提供的接口在该菜单中添加菜单项,从而提供一定的灵活性。要利用 <BR>桌面的应用项目接口,应用项目要实施两个函数: <BR> <BR>void CustomizeDesktopMenu (HMENU hmnu, int iPos); <BR>int CustomDesktopCommand (int id); <BR> <BR> 通过 CustomizeDesktopMenu 函数,应用项目可在桌面的浮动式菜单 <BR>中添加菜单及菜单项。当用户选择了定制的菜单项时,MiniGUI 将调用 <BR>CustomDesktopCommand 函数,这时,应用项目就可以处理该菜单命令。 <BR> <BR>2.4 对话框和控件 <BR> 对话框实际是一种特殊的主窗口。一般而言,对话框中包含有许多系 <BR>统提供的控件。对话框和控件的设计目标是提供和 Win32 在源代码级上 <BR>的完全兼容。但某些复杂的控件不打算支持,对话框页也不支持。MiniGUI <BR>支持的控件有: <BR> <BR> 静态控件。 <BR> 按钮控件。 <BR> 编辑控件。 <BR> 列表控件。 <BR> 滚动条控件。 <BR> 组合框控件。 <BR> <BR>同时,MiniGUI 将提供标准的公共对话框: <BR> <BR> 文件打开对话框。 <BR> 文件保存对话框。 <BR> <BR>2.6 消息框 <BR> MiniGUI 将提供和 Win32 完全兼容的消息框调用接口。 <BR> <BR>2.7 滚动支持 <BR> 将提供和 Win32 完全兼容的主窗口或子窗口的滚动支持。 <BR> <BR>-- <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.53.193] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -