控制台界面控制(四)

news/2024/7/6 22:24:31

本文为转载文档,源文档链接:http://blog.csdn.net/bnb45/article/details/7983562

设置光标位置

 

[cpp] view plaincopy

  1. // ---- 设置光标位置  
  2. void CMyConsole::Goto(short x, short y)  
  3. {  
  4.     COORD pos = {x, y};  
  5.   
  6.     SetConsoleCursorPosition(hOut, pos);  
  7. }  

设置窗口大小

关于窗口大小的问题,我有许多的疑问。可实际上它只涉及到两个函数:SetConsoleScreenBufferSize 和 SetConsoleWindowInfo;

SetConsoleScreenBufferSize:第一个函数的作用是设置缓冲区大小。那什么是缓冲区呢,缓冲区是用来放置文本的地方。当我们把文本放在缓冲区中,它将按照坐标关系显示在控制台窗口中。控制台缓冲区的原点坐标是(0,0),最大的坐标是缓冲区大小减1。例如缓冲区大小为80*25,则最大坐标为(79*24)。需要注意的是,缓冲区大小不得小于控制台的窗口大小;不得小于系统设定的最小长宽;

SetConsoleWindowInfo:这个函数的作用是设置控制台窗口的位置和大小。函数无效的两种情况:1. 当它设置大于缓冲区的大小时;2. 当它的右坐标小于左坐标,或者下坐标小于上坐标时。如果设置的控制台窗口尺寸小于缓冲区尺寸,则会出现滚动条;如果刚刚好,就不会出现滚动条。

 

[cpp] view plaincopy

  1. // ---- 设置窗口大小  
  2. void CMyConsole::SetSize(short len, short wid)  // 设置同样的缓冲区和窗口大小,不会出现滚动条  
  3. {  
  4.     COORD pos = {len, wid};  
  5.     SMALL_RECT rc = {0, 0, len-1, wid-1};       // 坐标从0开始  
  6.   
  7.     // -- 设置窗口信息  
  8.     // @param   HANDLE  [in] 窗口句柄  
  9.     // @param   bool    [in] 意思不明,但在true时才起作用  
  10.     // @param   RECT *  [in] 分别指定窗口左上角坐标和右下角坐标  
  11.     // #return  bool         成功返回非0值  
  12.     SetConsoleWindowInfo(hOut, true, &rc);  
  13.   
  14.     // -- 设置缓冲区大小  
  15.     // -- 长和宽不得小于控制台大小;不得小于系统最小限制。否则设置无效  
  16.     // @param   HANDLE  [in] 窗口句柄  
  17.     // @param   COORD   [in] 坐标结构,包含长和宽  
  18.     // #return  bool         成功返回非0值  
  19.     SetConsoleScreenBufferSize(hOut, pos);  
  20. }  

实例测试

 

[cpp] view plaincopy

  1. #include "MyConsole.h"  
  2. #include <stdio.h>  
  3.   
  4. int main()  
  5. {  
  6.     CMyConsole myConsole;  
  7.   
  8.     myConsole.SetSize(60, 30);  
  9.     myConsole.Goto(18, 14);  
  10.     printf("设置完毕!尺寸大小:60*30!\n");  
  11.     myConsole.Goto(0, 0);  
  12.     system("pause");  
  13.   
  14.     return 0;  
  15. }  


现在一个比较搞不懂的问题是,当我使用完一次SetSize函数后,就无法再使用第二次了。(为啥??)


http://www.niftyadmin.cn/n/3656346.html

相关文章

Javascript:检测FlashPlayer版本的函数

functiongetFlashVer() {//获得flashplayer的版本 googlevarf"",nnavigator; if(n.plugins &&n.plugins.length) { for(varii0;ii<n.plugins.length;ii) { if(n.plugins[ii].name.indexOf(Shockwave Flash)!-1) { fn.plugins[ii].description.spli…

控制台界面控制(五):文字颜色

本文为转载文档&#xff0c;原文档链接&#xff1a;http://blog.csdn.net/bnb45/article/details/7994025 设置字符属性 VC控制台提供了一个设置文本属性的函数&#xff0c;它的作用包括设置文本颜色&#xff0c;设置文本背景颜色&#xff0c;以及下划线等。 [cpp] view plain…

Calculator.NET 2.3发布

科学计算器 2.3发布简介支持表达式计算的科学计算器。完全可以替代Windows自带的计算器&#xff0c;使用起来更加人性化。支持变量保存、三角函数运算、指幂运算、角度弧度转换&#xff0c;除了Windows计算器的进制计算不支持外&#xff0c;其他的功能都已经实现。关于我为什么…

理解Session State模式+ASP.NET SESSION丢失FAQ [翻译]

作者&#xff1a;Patrick Y. Ng原文地址&#xff1a;http://forums.asp.net/7504/ShowPost.aspx译者&#xff1a;Tony Qu (来自BluePrint翻译团队)原文最后一次更新&#xff1a;2004年9月21日本文被分成两部分&#xff1a;1.“理解Session State模式”——帮助你理解三种Sessio…

控制台界面控制(六):边框

本文为转载文档&#xff0c;源文档地址&#xff1a;http://blog.csdn.net/bnb45/article/details/7997603 效果 [cpp] view plaincopy #include "MyConsole.h" #include <stdio.h> int main() { CMyConsole myConsole; SMALL_RECT rc {5, 5…

控制台界面控制(七):移动文本

本文为转载文档&#xff0c;原文链接&#xff1a;http://blog.csdn.net/bnb45/article/details/8034597 控制文本的移动&#xff0c;可以取代清屏再重绘操作。如果用来做文本编辑器的滚动条是很合适的&#xff0c;也许也可以用在俄罗斯方块上面。控制台使用一个函数把某个区域内…

[winform入门级好书]c# Windows Forms程序设计

书名&#xff1a;c# Windows Forms程序设计作者&#xff1a;Erik Brown[美]译者&#xff1a;朱毓斌、吴飞出版社&#xff1a;清华大学出版社售价&#xff1a;78元个人书评&#xff1a;本书操作步骤详细&#xff0c;完全可以与step by step级的书相媲美&#xff0c;而且涉及了许…

控制台界面控制(八):光标设置

本文为转载文档&#xff0c;源文档链接&#xff1a;http://blog.csdn.net/bnb45/article/details/8034641 光标的作用在于提醒使用者&#xff0c;你的输入将会在这个位置出现。目前对于光标的操作只有一个&#xff0c;移动光标&#xff0c;改变输出的位置。有时候光标在那里一闪…