⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000004.htm

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -