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

📄 fg__window_8cpp-source.html

📁 《道法自然》书的源码FishGUI,一个跨平台的界面库
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"><title>FishGUI: FG_Window.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- 制作者 Doxygen 1.3.6 --><div class="qindex"><a class="qindex" href="main.html">首页</a> | <a class="qindex" href="modules.html">模块</a> | <a class="qindex" href="hierarchy.html">类继承关系</a> | <a class="qindex" href="classes.html">按字典顺序排序的列表</a> | <a class="qindex" href="annotated.html">组合类型列表</a> | <a class="qindex" href="files.html">文件列表</a> | <a class="qindex" href="functions.html">组合类型成员</a> | <a class="qindex" href="globals.html">文件成员</a></div><h1>FG_Window.cpp</h1><a href="FG__Window_8cpp.html">浏览该文件的文档。</a><div class="fragment"><pre>00001 <span class="comment">/*--------------------------------------------------------------------------</span>00002 <span class="comment"></span>00003 <span class="comment">        FG_Window.cpp - 窗口类的实现文件</span>00004 <span class="comment"></span>00005 <span class="comment">        本程序是FishGUI软件的一部分</span>00006 <span class="comment"></span>00007 <span class="comment">        版权所有 (C) 2003,2004 王咏武</span>00008 <span class="comment">        http://www.contextfree.net/wangyw/</span>00009 <span class="comment"></span>00010 <span class="comment">----------------------------------------------------------------------------</span>00011 <span class="comment"></span>00012 <span class="comment">        作者对 FishGUI 软件及其所有源代码授权如下:</span>00013 <span class="comment"></span>00014 <span class="comment">        允许任何个人、组织、机构、企业无偿获得、修改、使用、重新发布 FishGUI 软</span>00015 <span class="comment">        件及其源代码,或按照有偿或者无偿的方式发行基于 FishGUI 源代码的全部或部</span>00016 <span class="comment">        分内容开发的软件产品,——但行使以上权利时,须遵守以下约定:</span>00017 <span class="comment"></span>00018 <span class="comment">        1、重新发布 FishGUI 软件及其源代码时,不得隐去软件及其源代码中原有的版</span>00019 <span class="comment">           权信息和开发者标识。</span>00020 <span class="comment"></span>00021 <span class="comment">        2、发行基于 FishGUI 源代码的全部或部分内容开发的软件产品时,必须在产品</span>00022 <span class="comment">           的显著位置标明以下字样:</span>00023 <span class="comment"></span>00024 <span class="comment">           【本产品的一部分功能是基于王咏武在 FishGUI 软件中的工作完成的】</span>00025 <span class="comment"></span>00026 <span class="comment">        3、在正式出版物中引用 FishGUI 的文档、源代码或注释内容的,应注明软件的</span>00027 <span class="comment">           原作者为王咏武。</span>00028 <span class="comment"></span>00029 <span class="comment">--------------------------------------------------------------------------*/</span>00041 <span class="preprocessor">#include "../OSAdaptor/FG_OSAdaptor.h"</span>00042 <span class="preprocessor">#include "<a class="code" href="FG__Screen_8h.html">FG_Screen.h</a>"</span>00043 <span class="preprocessor">#include "<a class="code" href="FG__Window_8h.html">FG_Window.h</a>"</span>00044 00045 <span class="preprocessor">#if defined(WIN32) &amp;&amp; defined(_DEBUG)</span>00046 <span class="preprocessor"></span>    <span class="comment">/* Trace memory allocation in windows debug version */</span>00047 <span class="preprocessor">    #include &lt;crtdbg.h&gt;</span>00048     <span class="keyword">static</span> <span class="keywordtype">char</span> THIS_FILE[] = __FILE__;00049 <span class="preprocessor">    #define new new(_NORMAL_BLOCK, __FILE__, __LINE__)</span>00050 <span class="preprocessor"></span><span class="preprocessor">#endif  </span><span class="comment">/* _DEBUG */</span>00051     00052 <span class="comment">// VC++下只需要写:</span>00053 <span class="comment">//     ON_DRAW         (OnDraw)</span>00054 <span class="comment">// gcc更严格,必须加类名</span><a name="l00055"></a><a class="code" href="classFG__Window.html#b5">00055</a> <a class="code" href="group__MsgMap__Define.html#ga1">BEGIN_MESSAGE_MAP</a>(<a class="code" href="classFG__Window.html">FG_Window</a>, <a class="code" href="classFG__Container.html">FG_Container</a>)00056     <a class="code" href="group__MsgMap__Define.html#ga2">ON_DRAW</a>         (FG_Window::OnDraw)00057     <a class="code" href="group__MsgMap__Define.html#ga4">ON_KEY</a>          (FG_Window::OnKey)00058     <a class="code" href="group__MsgMap__Define.html#ga7">ON_MOUSE</a>        (FG_Window::OnMouse)00059     <a class="code" href="group__MsgMap__Define.html#ga3">ON_DRAWREQUEST</a>  (FG_Window::OnDrawRequest)00060     <a class="code" href="group__MsgMap__Define.html#ga11">ON_FOCUS</a>        (FG_Window::OnFocus)00061 <a class="code" href="group__MsgMap__Define.html#ga15">END_MESSAGE_MAP</a>()00062 <a name="l00063"></a><a class="code" href="classFG__Window.html#a2">00063</a> <span class="keywordtype">bool</span> <a class="code" href="classFG__Window.html#a2">FG_Window::AddWidget</a>(<a class="code" href="classFG__Widget.html">FG_Widget</a> * <span class="keyword">const</span> pWidget)00064 {00065     <span class="keywordflow">if</span> (<a class="code" href="classFG__Container.html#b0">AddChild</a>(pWidget))00066     {00067         <span class="keywordflow">if</span> (pWidget-&gt;<a class="code" href="classFG__Widget.html#a1">CanGetFocus</a>())00068         {00069             <span class="comment">// 把焦点切换到刚添加的控件</span>00070                 <a class="code" href="classFG__Window.html#a6">ChangeFocus</a>(pWidget);00071         }00072         <span class="keywordflow">return</span> <span class="keyword">true</span>;00073     }00074     <span class="keywordflow">else</span>00075         <span class="keywordflow">return</span> <span class="keyword">false</span>;00076 }00077 <a name="l00078"></a><a class="code" href="classFG__Window.html#a3">00078</a> <span class="keywordtype">bool</span> <a class="code" href="classFG__Window.html#a3">FG_Window::RemoveWidget</a>(<a class="code" href="classFG__Widget.html">FG_Widget</a> * pWidget)00079 {00080     <span class="keywordflow">if</span> (<a class="code" href="classFG__Window.html#p1">m_pFocus</a> &amp;&amp; <a class="code" href="classFG__Window.html#p1">m_pFocus</a> == pWidget)00081     {                       00082         <span class="comment">// 如果删除的是当前焦点控件,把焦点指针置为NULL</span>00083         <span class="comment">// 之后,用户需要自己调整焦点</span>00084         <a class="code" href="classFG__Window.html#a6">ChangeFocus</a>(<a class="code" href="group__Utility.html#ga11">NULL</a>);00085     }00086     <span class="keywordflow">if</span> (<a class="code" href="classFG__Container.html#b1">RemoveChild</a>(pWidget))00087     {00088         <span class="comment">// 要求重画</span>00089         <a class="code" href="classFG__Object.html#b4">RequestDraw</a>();00090         <span class="keywordflow">return</span> <span class="keyword">true</span>;00091     }00092     <span class="keywordflow">else</span>00093         <span class="keywordflow">return</span> <span class="keyword">false</span>;00094 }00095 00096 <span class="comment">//##ModelId=3F6193A800D6</span><a name="l00097"></a><a class="code" href="classFG__Window.html#a4">00097</a> <span class="keywordtype">void</span> <a class="code" href="classFG__Window.html#a4">FG_Window::GetClientRect</a>(<a class="code" href="structFG__Rect.html">FG_Rect</a> &amp; rect)<span class="keyword"> const</span>00098 <span class="keyword"></span>{00099         <a class="code" href="classFG__Object.html#a3">FG_Object::GetClientRect</a>(rect);00100         <span class="keywordflow">if</span> (<a class="code" href="classFG__Window.html#p0">m_Title</a>.<a class="code" href="classFG__String.html#a5">Length</a>())00101                 rect.<a class="code" href="structFG__Rect.html#o1">wTop</a> += <a class="code" href="group__Utility.html#ga5">TITLE_HEIGHT</a>;00102 }00103 00104 <span class="comment">//##ModelId=3F6193A800F4</span><a name="l00105"></a><a class="code" href="classFG__Window.html#a6">00105</a> <span class="keywordtype">void</span> <a class="code" href="classFG__Window.html#a6">FG_Window::ChangeFocus</a>(<a class="code" href="classFG__Widget.html">FG_Widget</a> * <span class="keyword">const</span> pWidget)00106 {00107     <span class="keywordflow">if</span> (! pWidget || (pWidget &amp;&amp; pWidget-&gt;<a class="code" href="classFG__Widget.html#a1">CanGetFocus</a>()))00108     {00109         <a class="code" href="structFG__Message.html">FG_Message</a> Msg(<a class="code" href="group__Utility.html#gga12a25">FG_MSG_FOCUS</a>);00110             <span class="keywordflow">if</span> (<a class="code" href="classFG__Window.html#p1">m_pFocus</a>)00111         {00112             <span class="comment">// 给失去焦点的控件发送焦点失去消息</span>00113             Msg.<a class="code" href="structFG__Message.html#o1">wData</a> = <a class="code" href="group__Utility.html#gga15a36">FFS_LOSE</a>;00114                     <a class="code" href="classFG__Window.html#p1">m_pFocus</a>-&gt;<a class="code" href="classFG__Object.html#a20">Message</a>(&amp; Msg);00115         }00116             <a class="code" href="classFG__Window.html#p1">m_pFocus</a> = pWidget;00117             <span class="keywordflow">if</span> (<a class="code" href="classFG__Window.html#p1">m_pFocus</a>)00118         {00119             <span class="comment">// 给得到焦点的控件发送焦点得到消息</span>00120             Msg.<a class="code" href="structFG__Message.html#o1">wData</a> = <a class="code" href="group__Utility.html#gga15a35">FFS_GET</a>;00121                     <a class="code" href="classFG__Window.html#p1">m_pFocus</a>-&gt;<a class="code" href="classFG__Object.html#a20">Message</a>(&amp; Msg);00122         }00123     }00124 }00125 <a name="l00126"></a><a class="code" href="classFG__Window.html#a5">00126</a> <span class="keywordtype">bool</span> <a class="code" href="classFG__Window.html#a5">FG_Window::RegisterKey</a>(<span class="keyword">const</span> <a class="code" href="group__Utility.html#ga1">WORD</a> wOrgKey, <span class="keyword">const</span> <a class="code" href="group__Utility.html#ga1">WORD</a> wActKey, <span class="keyword">const</span> <a class="code" href="group__Utility.html#ga1">WORD</a> wID)00127 {

⌨️ 快捷键说明

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