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

📄 wg__editbox_8cpp-source.html

📁 一个小巧的嵌入式图形系统wGUI, 可以用VC编译
💻 HTML
📖 第 1 页 / 共 4 页
字号:
00287                <span class="keywordflow">if</span> (pMouseMessage &amp;&amp; <a class="code" href="classwGui_1_1CWindow.html#n7">m_bVisible</a> &amp;&amp; !<a class="code" href="classwGui_1_1CEditBox.html#n7">m_bReadOnly</a>)00288                {00289                     <span class="comment">//If the cursor is within the control then check to see if we've already</span>00290                     <span class="comment">// set the cursor to the I Beam, if we have, don't do anything.  If we</span>00291                     <span class="comment">// havent, set it to the ibeam.</span>00292                     <span class="comment">//Else if it's outside the control and the I Beam cursor is set, set it</span>00293                     <span class="comment">// back to a normal cursor.</span>00294                     <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CWindow.html#n1">m_WindowRect</a>.<a class="code" href="classwGui_1_1CRect.html#a32">HitTest</a>(pMouseMessage-&gt;<a class="code" href="classwGui_1_1CMouseMessage.html#m0">Point</a>) == CRect::RELPOS_INSIDE &amp;&amp; !<a class="code" href="classwGui_1_1CEditBox.html#n10">m_bLastMouseMoveInside</a>)00295                     {00296                          <a class="code" href="classwGui_1_1CEditBox.html#n10">m_bLastMouseMoveInside</a> = <span class="keyword">true</span>;00297                          <a class="code" href="classwGui_1_1CwgCursorResourceHandle.html">CwgCursorResourceHandle</a> IBeamHandle(WGRES_IBEAM_CURSOR);00298                          CApplication::Instance()-&gt;SetMouseCursor(&amp;IBeamHandle);00299                     }00300                     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CWindow.html#n1">m_WindowRect</a>.<a class="code" href="classwGui_1_1CRect.html#a32">HitTest</a>(pMouseMessage-&gt;<a class="code" href="classwGui_1_1CMouseMessage.html#m0">Point</a>) != CRect::RELPOS_INSIDE &amp;&amp; <a class="code" href="classwGui_1_1CEditBox.html#n10">m_bLastMouseMoveInside</a>)00301                     {00302                          <a class="code" href="classwGui_1_1CEditBox.html#n10">m_bLastMouseMoveInside</a>= <span class="keyword">false</span>;00303                          CApplication::Instance()-&gt;SetMouseCursor();00304                     }00305 00306                     <span class="keywordflow">if</span> (m_bMouseDown)00307                     {00308                          <a class="code" href="classwGui_1_1CPoint.html">CPoint</a> Offset;00309                          std::vector&lt;CRect&gt; CharRects;00310                          <a class="code" href="classwGui_1_1CEditBox.html#n1">m_pRenderedString</a>-&gt;GetMetrics(0, &amp;Offset, &amp;CharRects);00311 00312                          <span class="keywordtype">int</span> xDelta = abs(pMouseMessage-&gt;<a class="code" href="classwGui_1_1CMouseMessage.html#m0">Point</a>.<a class="code" href="classwGui_1_1CPoint.html#a6">XPos</a>() - (CharRects[0].Left() + Offset.<a class="code" href="classwGui_1_1CPoint.html#a6">XPos</a>() + SubRect.<a class="code" href="classwGui_1_1CRect.html#a10">Left</a>() + <a class="code" href="classwGui_1_1CEditBox.html#n6">m_ScrollOffset</a>));00313                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> CursorPos = 0;00314                          <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code" href="classwGui_1_1CEditBox.html#n1">m_pRenderedString</a>-&gt;GetLength(); ++i)00315                          {00316                               <span class="keywordflow">if</span> (abs(pMouseMessage-&gt;<a class="code" href="classwGui_1_1CMouseMessage.html#m0">Point</a>.<a class="code" href="classwGui_1_1CPoint.html#a6">XPos</a>() - (CharRects[i].Right() + Offset.<a class="code" href="classwGui_1_1CPoint.html#a6">XPos</a>() + SubRect.<a class="code" href="classwGui_1_1CRect.html#a10">Left</a>() + <a class="code" href="classwGui_1_1CEditBox.html#n6">m_ScrollOffset</a>)) &lt; xDelta)00317                               {00318                                    xDelta = abs(pMouseMessage-&gt;<a class="code" href="classwGui_1_1CMouseMessage.html#m0">Point</a>.<a class="code" href="classwGui_1_1CPoint.html#a6">XPos</a>() - (CharRects[i].Right() + Offset.<a class="code" href="classwGui_1_1CPoint.html#a6">XPos</a>() + SubRect.<a class="code" href="classwGui_1_1CRect.html#a10">Left</a>() + <a class="code" href="classwGui_1_1CEditBox.html#n6">m_ScrollOffset</a>));00319                                    CursorPos = i + 1;00320                               }00321                          }00322 00323                          <span class="keywordflow">if</span> (CursorPos &lt; <a class="code" href="classwGui_1_1CEditBox.html#n5">m_DragStart</a>)00324                          {00325                               <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> = <a class="code" href="classwGui_1_1CEditBox.html#n5">m_DragStart</a> - CursorPos;00326                               <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> = CursorPos;00327                          }00328                          <span class="keywordflow">else</span>00329                          {00330                               <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> = <a class="code" href="classwGui_1_1CEditBox.html#n5">m_DragStart</a>;00331                               <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> = CursorPos - <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a>;00332                          }00333                          bHandled = <span class="keyword">true</span>;00334                          <a class="code" href="classwGui_1_1CWindow.html#a23">StartDrawProc</a>();00335                     }00336                }00337                <span class="keywordflow">break</span>;00338           }00339           <span class="keywordflow">case</span> CMessage::KEYBOARD_KEYDOWN:00340                <span class="keywordflow">if</span> (m_bVisible)00341                {00342                     <a class="code" href="classwGui_1_1CKeyboardMessage.html">CKeyboardMessage</a>* pKeyboardMessage = dynamic_cast&lt;CKeyboardMessage*&gt;(pMessage);00343                     <span class="keywordflow">if</span> (pKeyboardMessage &amp;&amp; pMessage-&gt;<a class="code" href="classwGui_1_1CMessage.html#a3">Destination</a>() == <span class="keyword">this</span> &amp;&amp; !<a class="code" href="classwGui_1_1CEditBox.html#n7">m_bReadOnly</a>)00344                     {00345                          std::string sBuffer = <a class="code" href="classwGui_1_1CWindow.html#n0">m_sWindowText</a>;00346 00347                          <span class="keywordflow">switch</span>(pKeyboardMessage-&gt;<a class="code" href="classwGui_1_1CKeyboardMessage.html#m2">Key</a>)00348                          {00349                          <span class="keywordflow">case</span> SDLK_BACKSPACE:00350                               <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> &gt; 0)00351                               {00352                                    <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> &gt; 0)00353                                    {00354                                         <a class="code" href="classwGui_1_1CEditBox.html#b0">SelDelete</a>(&amp;sBuffer);00355                                    }00356                                    <span class="keywordflow">else</span>00357                                    {00358                                         sBuffer.erase(--<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a>, 1);00359                                    }00360                               }00361                               <span class="keywordflow">break</span>;00362 00363                          <span class="keywordflow">case</span> SDLK_DELETE:00364                               <span class="keywordflow">if</span> (static_cast&lt;unsigned int&gt;(m_SelStart) &lt; sBuffer.length())00365                               {00366                                    <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> &gt; 0)00367                                    {00368                                         <a class="code" href="classwGui_1_1CEditBox.html#b0">SelDelete</a>(&amp;sBuffer);00369                                    }00370                                    <span class="keywordflow">else</span>00371                                    {00372                                         sBuffer.erase(<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a>, 1);00373                                    }00374                               }00375                               <span class="keywordflow">break</span>;00376 00377                          <span class="keywordflow">case</span> SDLK_LEFT:00378                               <span class="keywordflow">if</span> (pKeyboardMessage-&gt;<a class="code" href="classwGui_1_1CKeyboardMessage.html#m1">Modifiers</a> &amp; KMOD_SHIFT) <span class="comment">//Shift modifier</span>00379                          {00380                                    <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> &gt; 0)00381                                    {00382                                         <span class="keywordflow">if</span> ((<a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> &gt; 0) || ((<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> - abs(<a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a>)) &gt; 0))00383                                         {00384                                              <span class="keywordflow">if</span> (pKeyboardMessage-&gt;<a class="code" href="classwGui_1_1CKeyboardMessage.html#m1">Modifiers</a> &amp; KMOD_CTRL)00385                                              {00386                                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos = static_cast&lt;unsigned int&gt;(sBuffer.rfind(<span class="stringliteral">" "</span>, (<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> + <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a>) - 1));00387                                                   <span class="keywordflow">if</span> (pos != std::string::npos)00388                                                   {00389                                                        <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> = pos - <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a>;00390                                                   }00391                                                   <span class="keywordflow">else</span>00392                                                   {00393                                                        <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> = <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> * -1;00394                                                   }00395                                              }00396                                              <span class="keywordflow">else</span>00397                                              {00398                                                   <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a>--;00399                                              }00400                                         }00401                                    }00402                          }00403                               <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> != 0)00404                               {00405                                    <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> &lt; 0)00406                                    {00407                                         <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> = <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> + <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a>;00408                                    }00409                                    <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> = 0;00410 00411                               }00412                               <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> &gt; 0)00413                               {00414                                    <span class="keywordflow">if</span> (pKeyboardMessage-&gt;<a class="code" href="classwGui_1_1CKeyboardMessage.html#m1">Modifiers</a> &amp; KMOD_CTRL)00415                                    {00416                                         <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> pos = static_cast&lt;unsigned int&gt;(sBuffer.rfind(<span class="stringliteral">" "</span>, <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> - 1));00417                                         <span class="keywordflow">if</span> (pos != std::string::npos)00418                                         {00419                                              <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> = pos;00420                                         }00421                                         <span class="keywordflow">else</span>00422                                         {00423                                              <a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a> = 0;00424                                         }00425                                    }00426                                    <span class="keywordflow">else</span>00427                                    {00428                                         --<a class="code" href="classwGui_1_1CEditBox.html#n3">m_SelStart</a>;00429                                    }00430                                    <a class="code" href="classwGui_1_1CEditBox.html#n4">m_SelLength</a> = 0;00431                               }00432                               <span class="keywordflow">break</span>;00433                          <span class="keywordflow">case</span> SDLK_RIGHT:

⌨️ 快捷键说明

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