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

📄 基于 linux 和 minigui 的嵌入式系统软件开发指南(二).htm

📁 详细的介绍了minigui的原理及其在linux上的实现.
💻 HTM
📖 第 1 页 / 共 4 页
字号:
      <P><SPAN class=atitle3>6.5 MSG_CREATE</SPAN><BR>该消息在建立好的窗口成功添加到 MiniGUI 
      的窗口管理器之后发送到窗口过程。这时,应用程序可以在其中创建子窗口。如果该消息返回非零值,则将销毁新建的窗口。注意,在 MSG_NCCREATE 
      消息被发送时,窗口尚未正常建立,所以不能在 MSG_NCCREATE 消息中建立子窗口。</P>
      <P><SPAN class=atitle3>6.6 
      MSG_PAINT</SPAN><BR>该消息在需要进行窗口重绘时发送到窗口过程。MiniGUI 
      通过判断窗口是否含有无效区域来确定是否需要重绘。当窗口在初始显示、从隐藏状态变化为显示状态、从部分不可见到可见状态,或者应用程序调用 
      InvalidateRect 函数使某个矩形区域变成无效时,窗口将具有特定的无效区域。这时,MiniGUI 
      将在处理完所有的邮寄消息、通知消息之后处理无效区域,并向窗口过程发送 MSG_PAINT 消息。该消息的典型处理如下:</P>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
        border=1><TBODY>
        <TR>
          <TD><PRE><CODE>case MSG_PAINT:
{
    HDC hdc;

    hdc = BeginPaint (hWnd);

    // 使用 hdc 绘制窗口
    ...

    EndPaint (hWnd, hdc);
    break;
}
</CODE>
</PRE></TD></TR></TBODY></TABLE><BR><BR>
      <P><SPAN class=atitle3>6.7 MSG_DESTROY</SPAN><BR>该消息在应用程序调用 
      DestroyMainWindow 或者 DestroyWindow 
      时发送到窗口过程当中,用来通知系统即将销毁一个窗口。如果该消息的处理返回非零值,则将取消销毁过程。</P>
      <P><A id=7 name=7><SPAN class=atitle2>7 Hello, 
      World</SPAN></A><BR>在这个小节当中,我们给出一个简单的示例程序,该程序在窗口中打印"Hello, world!":</P>
      <TABLE cellSpacing=0 cellPadding=5 width="100%" bgColor=#cccccc 
        border=1><TBODY>
        <TR>
          <TD><PRE><CODE>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

#include &lt;minigui/common.h&gt;
#include &lt;minigui/minigui.h&gt;
#include &lt;minigui/gdi.h&gt;
#include &lt;minigui/window.h&gt;

static int HelloWinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;

    switch (message) {
        case MSG_PAINT:
            hdc = BeginPaint (hWnd);
            TexOut (hdc, 0, 0, "Hello, world!");
            EndPaint (hWnd, hdc);
        break;

        case MSG_CLOSE:
            DestroyMainWindow (hWnd);
            PostQuitMessage (hWnd);
        return 0;
    }

    return DefaultMainWinProc(hWnd, message, wParam, lParam);
}

static void InitCreateInfo (PMAINWINCREATE pCreateInfo)
{
    pCreateInfo-&gt;dwStyle = WS_CAPTION | WS_VISIBLE;
    pCreateInfo-&gt;dwExStyle = 0;
    pCreateInfo-&gt;spCaption = "Hello, world!" ;
    pCreateInfo-&gt;hMenu = 0;
    pCreateInfo-&gt;hCursor = GetSystemCursor (0);
    pCreateInfo-&gt;hIcon = 0;
    pCreateInfo-&gt;MainWindowProc = HelloWinProc;
    pCreateInfo-&gt;lx = 0; 
    pCreateInfo-&gt;ty = 0; 
    pCreateInfo-&gt;rx = 320;
    pCreateInfo-&gt;by = 240;
    pCreateInfo-&gt;iBkColor = PIXEL_lightwhite; 
    pCreateInfo-&gt;dwAddData = 0;
    pCreateInfo-&gt;hHosting = HWND_DESKTOP;
}

int MiniGUIMain (int args, const char* arg[])
{
    MSG Msg;
    MAINWINCREATE CreateInfo;
    HWND hMainWnd;

#ifdef _LITE_VERSION
    SetDesktopRect (0, 0, 800, 600);
#endif

    InitCreateInfo (&amp;CreateInfo);

    hMainWnd = CreateMainWindow (&amp;CreateInfo);
    if (hMainWnd == HWND_INVALID)
        return -1;

    while (GetMessage (&amp;Msg, hMainWnd)) {
        DispatchMessage (&amp;Msg);
    }

    MainWindowThreadCleanup (hMainWnd);
    return 0;
}
</CODE>
</PRE></TD></TR></TBODY></TABLE>很显然,这是一个非常简单的程序。该程序使用了 MiniGUI 
      的默认过程来处理我们前面提到的许多消息,而仅仅处理了 MSG_PAINT 和 MSG_CLOSE 
      两条消息。当用户单击标题栏上的关闭按钮时,MiniGUI 将发送 MSG_CLOSE 
      到窗口过程。这时,应用程序就可以销毁窗口,并终止消息循环,最终退出程序。 <BR><BR>
      <P><A id=8 name=8><SPAN class=atitle2>8 小结</SPAN></A><BR>本文描述了 MiniGUI 
      中与消息相关的几个重要函数,并讲述了 MiniGUI-Threads 和 MiniGUI-Lite 在消息机制实现上的几个不同。本文还讲述了在 
      MiniGUI 中的窗口建立和销毁过程,并解释了窗口过程的概念以及一些重要消息的处理。最后,本文给出了一个简单的 MiniGUI 
      的示例程序,该程序建立窗口,并在其中打印"Hello, world!"。</P>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD><A id=author1 name=author1><SPAN class=atitle2>关于作者</SPAN></A> 
            <BR>魏永明(<A 
            href="mailto:ymwei@minigui.org">ymwei@minigui.org</A>),男,27 
            岁,工学硕士。国内最有影响的自由软件项目之一--MiniGUI 的创始人及主要开发人员。著有《Linux 实用教程》与《学用 Linux 
            与 Windows NT》,并主持翻译了《Red Hat Linux 奥秘》、《Linux 编程宝典》 等大量优秀的 Linux 
            技术著作。是清华大学 AKA Linux 编程技术系列讲座的主讲人。</TD></TR></TBODY></TABLE><!-- END PAPER BODY --></TD>
    <TD width=10><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/c.gif" width=10 
  border=0></TD></TR></TBODY></TABLE><BR clear=all><IMG height=10 alt="" 
src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/c.gif" width=100 border=0><BR>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR vAlign=top>
    <TD align=right width="100%"><A 
      href="http://www-900.ibm.com/developerWorks/cn/linux/embed/minigui/guide/part2/index.shtml#top">到页首</A></TD>
    <TD width=5><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/c.gif" width=5 
  border=0></TD></TR>
  <TR vAlign=top>
    <TD bgColor=#000000 colSpan=2><IMG height=1 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/c.gif" width=100 
  border=0></TD></TR>
  <TR vAlign=top>
    <TD bgColor=#ffffff colSpan=2><IMG height=8 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/c.gif" width=100 
  border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=10 width="100%" border=0>
  <TBODY>
  <TR vAlign=top>
    <TD>
      <FORM action=/developerWorks/cn/cnratings.nsf/RateArticle?CreateDocument 
      method=post><INPUT type=hidden value="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南" 
      name=ArticleTitle> <INPUT type=hidden value=linux name=Zone> <INPUT 
      type=hidden value=/developerWorks/cn/thankyou/feedback-linux.html 
      name=RedirectURL> <A id=rating name=rating><B>您对这篇文章的看法如何?</B></A> 
      <TABLE cellSpacing=0 cellPadding=0 width=600 border=0>
        <TBODY>
        <TR>
          <TD colSpan=5><IMG height=8 alt="" 
            src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/c.gif" width=100 
            border=0></TD></TR>
        <TR vAlign=top>
          <TD width="16%"><INPUT type=radio value=5 name=Rating>真棒!(5)</TD>
          <TD width="20%"><INPUT type=radio value=4 name=Rating>好材料 (4)</TD>
          <TD width="24%"><INPUT type=radio value=3 name=Rating>一般;尚可 (3)</TD>
          <TD width="22%"><INPUT type=radio value=2 name=Rating>需提高 (2)</TD>
          <TD width="18%"><INPUT type=radio value=1 name=Rating>太差! 
        (1)</TD></TR></TBODY></TABLE><BR><B>建议?</B><BR><TEXTAREA name=Comments rows=5 wrap=virtual cols=60></TEXTAREA><BR><BR><INPUT type=submit value=提交反馈意见></FORM></TD></TR>
  <TR vAlign=top>
    <TD bgColor=#ffffff><IMG height=8 alt="" 
      src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/c.gif" width=100 
  border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD align=right>(c) Copyright IBM Corp. 2001, (c) Copyright IBM China 
      2001, All Right Reserved</TD></TR>
  <TR vAlign=top>
    <TD class=bbg height=21>&nbsp;&nbsp;<A class=mainlink 
      href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/index.shtml&amp;origin=dwhead">关于 
      IBM</A><SPAN class=divider>&nbsp;&nbsp;|&nbsp;&nbsp;</SPAN><A 
      class=mainlink 
      href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/privacy/index.shtml&amp;origin=dwhead">隐私条约</A><SPAN 
      class=divider>&nbsp;&nbsp;|&nbsp;&nbsp;</SPAN><A class=mainlink 
      href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/legal/index.shtml&amp;origin=dwhead">使用条款</A><SPAN 
      class=divider>&nbsp;&nbsp;|&nbsp;&nbsp;</SPAN><A class=mainlink 
      href="http://www-900.ibm.com/developerWorks/cn/cgi-bin/click.cgi?url=www-900.ibm.com/cn/ibm/contact/index.shtml&amp;origin=dwhead">联系 
      IBM</A></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript1.2 
src="基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files/stats.js" 
type=text/javascript></SCRIPT>
<NOSCRIPT><IMG height=1 alt="" 
src="D:\新建文件夹\基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(二).files\c(1).gif" width=1 
border=0></NOSCRIPT> </A></BODY></HTML>

⌨️ 快捷键说明

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