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

📄 console_wnd.htm

📁 窗口类CBufferWnd:能够作为子窗口或者时弹出窗口支持滚动
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<p class=MsoNormalIndent><span lang=EN-US>nID</span><span style='font-family:
宋体'>:窗口</span><span lang=EN-US>ID</span><span style='font-family:宋体'>。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>iTabSize</span><span
style='font-family:宋体'>:指定</span><span lang=EN-US>TAB</span><span
style='font-family:宋体'>字符所对应的空格宽度。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>iFontSize</span><span
style='font-family:宋体'>:字符大小,此数字将会直接传递到</span><span lang=EN-US>CFont::CreatePointFont</span><span
style='font-family:宋体'>进行字体创建。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>iWidthBuf</span><span
style='font-family:宋体'>:窗口每行显示的字符数。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>iHeightBuf</span><span
style='font-family:宋体'>:窗口保存的的行数。</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>窗口一旦创建后,会在对象内部创建</span><span
lang=EN-US>iWidthBuf</span><span style='font-family:宋体'>×</span><span
lang=EN-US>iHeightBuf</span><span style='font-family:宋体'>字节的缓冲区来保存窗口中需要显示的文字内容。对应各行各列的字符(行列序号从</span><span
lang=EN-US>0</span><span style='font-family:宋体'>开始计算)。计算方法如下:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>value</span><span style='font-family:
宋体'>【</span><span lang=EN-US>column</span><span style='font-family:宋体'>,</span><span
lang=EN-US>row</span><span style='font-family:宋体'>】=</span><span lang=EN-US>buffer</span><span
style='font-family:宋体'>【</span><span lang=EN-US>column</span><span
style='font-family:宋体'>+</span><span lang=EN-US>row</span><span
style='font-family:宋体'>×</span><span lang=EN-US>iWidthHeight</span><span
style='font-family:宋体'>】</span></p>

<h2 style='margin-left:40.9pt'><a name="_Toc49144663"><span lang=EN-US>2.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>创建弹出窗口</span></a></h2>

<p class=MsoNormalIndent><span class=a0><span lang=EN-US style='font-size:9.0pt;
line-height:150%'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BOOL CreateAppWnd(DWORD
dwFlagsAdd,LPCSTR pszTitle,const CRect &amp; rect, int iTabSize, int iFontSize,
int iWidthBuf, int iHeightBuf);</span></span></p>

<p class=MsoNormalIndent><span lang=EN-US>dwFlagsAdd</span><span
style='font-family:宋体'>:指定窗口的属性,窗口在创建时会自动指定</span><span lang=EN-US>WS_OVERLAPPED
| WS_VISIBLE | WS_VSCROLL | WS_HSCROLL</span><span style='font-family:宋体'>属性,不可以指定</span><span
lang=EN-US>WS_POPUP</span><span style='font-family:宋体'>属性。</span></p>

<h3 style='margin-left:54.0pt'><a name="_Toc49144664"><span lang=EN-US>2.3.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>销毁窗口</span></a></h3>

<p class=MsoNormalIndent><span style='font-family:宋体'>弹出窗口在进行销毁前必须调用</span> <span
lang=EN-US>void CBufferWnd::SetCanExitFlag(BOOL fCan)</span><span
style='font-family:宋体'>设置退出标记,否则</span><span lang=EN-US>WM_CLOSE</span><span
style='font-family:宋体'>消息将会被丢弃。</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>而子窗口则受此限制。</span></p>

<h2 style='margin-left:40.9pt'><a name="_Toc49144665"><span lang=EN-US>2.4<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>窗口滚动</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>计算滚动范围:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void ReCalcScrollSize( void);</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>滚动到指定行列:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void ScrollTo(int iX,int iY)</span><span
style='font-family:宋体'>。</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>判断指定行列是否在当前的显示区中,如果不在则滚动到能够显示指定行列的最近位置:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>BOOL ScrollIfPointNotShown(int iX,int
iY)</span><span style='font-family:宋体'>。</span></p>

<h2 style='margin-left:40.9pt'><a name="_Toc49144666"><span lang=EN-US>2.5<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>设置光标位置</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>将光标设置到指定行列处显示:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void SetCaretPoint(int iX,int iY)</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void SetCaretPoint(CPoint ptCaret)</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>得到光标当前位置:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void GetCaretPoint(CPoint&amp;
ptCaret)</span></p>

<h2 style='margin-left:40.9pt'><a name="_Toc49144667"><span lang=EN-US>2.6<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>文字输出功能</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>直接的函数调用并不是线程安全的,如果多个线程同时使用文字输出功能,必须使用消息通知的方式。</span></p>

<h3 style='margin-left:54.0pt'><a name="_Toc49144668"><span lang=EN-US>2.6.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>填充空行</span></a></h3>

<p class=MsoNormalIndent><span style='font-family:宋体'>在文本区域的最后一行后填充指定字符的空行,不改变光标位置。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void ScrollTxtUp(int iLines,char
cFill=0x20);</span></p>

<h3 style='margin-left:54.0pt'><a name="_Toc49144669"><span lang=EN-US>2.6.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>在光标处添加文字</span></a></h3>

<p class=MsoNormalIndent><span style='font-family:宋体'>在光标处添加文字</span><span
lang=EN-US>,</span><span style='font-family:宋体'>同时改变光标位置。</span></p>

<p class=MsoNormalIndent><span class=a0><span lang=EN-US style='font-size:9.0pt;
line-height:150%'>void AppendTxtAtCaret(int iTxtLen,LPCSTR pszText,BOOL
fShowY=TRUE,BOOL fShowX=FALSE);</span></span></p>

<p class=MsoNormalIndent><span class=a0><span lang=EN-US style='font-size:9.0pt;
line-height:150%'>void AppendTxtAtCaret(LPCSTR pszText,BOOL fShowY=TRUE,BOOL
fShowX=FALSE)</span></span></p>

<p class=MsoNormalIndent><span lang=EN-US>iTxtLen</span><span style='font-family:
宋体'>:文字长度</span></p>

<p class=MsoNormalIndent><span lang=EN-US>pszText</span><span style='font-family:
宋体'>:待显示的文字指针,如果不指定长度则取</span><span lang=EN-US>NULL</span><span
style='font-family:宋体'>字符作为结束符号。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>fShowY</span><span style='font-family:
宋体'>,</span><span lang=EN-US>fShowX</span><span style='font-family:宋体'>:在添加文字后是否强制显示光标所在的行列。</span></p>

<p class=MsoNormalIndent><span class=a0><span style='line-height:150%;
font-family:宋体;color:red'>注意:利用此功能时函数不能处理在换行时半个汉字的情况。所以请尽量不要使用</span></span><span
class=a0><span lang=EN-US style='line-height:150%;color:red'>CBufferWnd</span></span><span
class=a0><span style='line-height:150%;font-family:宋体;color:red'>提供的文字功能,而时候</span></span><span
class=a0><span lang=EN-US style='line-height:150%;color:red'>CConsoler</span></span><span
class=a0><span style='line-height:150%;font-family:宋体;color:red'>提供的文字功能。</span></span></p>

<h3 style='margin-left:54.0pt'><a name="_Toc49144670"><span lang=EN-US>2.6.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>消息通知</span> <span lang=EN-US>WM_BW_NOTIFY</span></a></h3>

<p class=MsoNormalIndent><span style='font-family:宋体'>消息:</span><span
lang=EN-US>WM_BW_NOTIFY</span></p>

<p class=MsoNormalIndent><span lang=EN-US>WPARAM = 0 </span><span
style='font-family:宋体'>时表示</span><span lang=EN-US> ScrollTxtUp </span><span
style='font-family:宋体'>,</span><span lang=EN-US>LPARAM</span><span
style='font-family:宋体'>为参数</span></p>

<p class=MsoNormalIndent><span lang=EN-US>HIWORD(LPARAM) = </span><span
style='font-family:宋体'>滚动行数</span><span lang=EN-US> </span></p>

<p class=MsoNormalIndent><span lang=EN-US>LOBYTE(LOWORD(LPARAM)) = </span><span
style='font-family:宋体'>填充字符</span></p>

<p class=MsoNormalIndent><span lang=EN-US>&nbsp;</span></p>

<p class=MsoNormalIndent><span lang=EN-US>WPARAM = 1 </span><span
style='font-family:宋体'>时表示</span><span lang=EN-US> AppendTxtAtCaret</span></p>

<p class=MsoNormalIndent><span lang=EN-US>LPARAM = </span><span
style='font-family:宋体'>指向结构</span><span lang=EN-US> struct
CBufferWnd::strAppendTxt </span><span style='font-family:宋体'>的指针</span></p>

<h2 style='margin-left:40.9pt'><a name="_Toc49144671"><span lang=EN-US>2.7<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>缓冲区控制</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>得到指定行列位置的字符:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>BYTE&amp; GetXY(int iX,int iY)</span></p>

<p class=MsoNormalIndent><span lang=EN-US>BYTE&amp; operator [] (int iIndex)</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>得到缓冲区指针:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>const BYTE* GetBuffer(void)</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>得到缓冲区大小:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>int GetBufferLen(void) </span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>得到缓冲区尺寸:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void GetBufferWindowSize(int
&amp;iWidth,int &amp;iHeight)</span></p>

<p class=MsoNormalIndent><span lang=EN-US>&nbsp;</span></p>

<h1><a name="_Toc49144672"><span lang=EN-US>第 3 章<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span style='font-family:宋体'>输出类</span><span lang=EN-US>CConsoler</span></a><span
style='font-family:宋体'>的使用</span></h1>

<h2 style='margin-left:40.9pt'><a name="_Toc49144673"><span lang=EN-US>3.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>创建并与窗口关联</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>利用默认的构造函数创建对象:</span><span
lang=EN-US>CConsoler ::CConsoler()</span><span style='font-family:宋体'>。</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>然后调用</span><span
lang=EN-US>void CConsoler ::SetBufferWnd(CBufferWnd* pWnd)</span><span
style='font-family:宋体'>,设置对象所对应的窗口指针。</span></p>

<h2 style='margin-left:40.9pt'><a name="_Toc49144674"><span lang=EN-US>3.2<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>输出</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>类似与</span><span
lang=EN-US>printf</span><span style='font-family:宋体'>的调用方式。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>void CConsoler ::printfX(const char
*pszFormat,...)</span></p>

<h2 style='margin-left:40.9pt'><a name="_Toc49144675"><span lang=EN-US>3.3<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>其他</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>得到窗口指定行列位置的字符:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>BYTE&amp; GetXY(int iX,int iY)</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>得到输出窗口指针:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>CBufferWnd* GetWindow(void)</span></p>

<p class=MsoNormalIndent><span lang=EN-US>&nbsp;</span></p>

<h1><a name="_Toc49144676"><span lang=EN-US>第 4 章<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span style='font-family:宋体'>使用示例</span></a></h1>

<h2 style='margin-left:40.9pt'><a name="_Toc49144677"><span lang=EN-US>4.1<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>文件</span></a></h2>

<p class=MsoNormalIndent><span style='font-family:宋体'>文件:</span></p>

<p class=MsoNormalIndent><span lang=EN-US>#include &quot;spBufferWnd.h&quot;</span></p>

<p class=MsoNormalIndent><span lang=EN-US>spConsoler.cpp spBufferWnd.cpp</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>库文件:</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>如果直接包含原文件进行编译则不需要包含库文件。</span></p>

<p class=MsoNormalIndent><span lang=EN-US>#if defined(_DEBUG)</span></p>

<p class=MsoNormalIndent><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp; #pragma
comment(lib, &quot;spRemote_D.lib&quot;)</span></p>

<p class=MsoNormalIndent><span lang=EN-US>#else</span></p>

<p class=MsoNormalIndent><span lang=EN-US>&nbsp;&nbsp;&nbsp;&nbsp; #pragma
comment(lib, &quot;spRemote.lib&quot;)</span></p>

<p class=MsoNormalIndent><span lang=EN-US>#endif</span></p>

<p class=MsoNormalIndent><span style='font-family:宋体'>示例代码:</span></p>

⌨️ 快捷键说明

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