加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言控制台在指定位置输出字符

(2017-08-19 11:21:20)
标签:

it

经验

分类: 技术类


这个复杂点,需要Windows下的一些特殊的API函数,参考以下文章:
http://hi.baidu.com/onlywater/blog/item/917981822ec5b8ba6d81192e.html
追问:

BOOL WriteConsoleOutputCharacter( // 在指定位置处插入指定数量的字符
HANDLE hConsoleOutput, // 句柄
LPCTSTR lpCharacter, // 字符串
DWORD nLength, // 字符个数
COORD dwWriteCoord, // 起始位置
LPDWORD lpNumberOfCharsWritten // 已写个数
);

 

我看到里面有这么一个函数,我想应该用这个函数就能实现吧,你能给我介绍一下怎么用吗?或者可以给我写一段示例代码吗?

追答:

#include

void PrintChar(char *ch,UINT count,UINT x,UINT y)  //在坐标(x,y)处输出字符串ch,ch里有count个字符
{
 HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
 COORD pos;
 ULONG unuse;
 pos.X=x;
 pos.Y=y;
 CONSOLE_SCREEN_BUFFER_INFO bInfo; // 窗口缓冲区信息
 GetConsoleScreenBufferInfo(h, &bInfo );
 WriteConsoleOutputCharacterA(h,ch,count,pos,&unuse);
}

int main()
 
 PrintChar("123",3,2,2);
 return 0;
}

追问:
嗯,我会用了,另外我再问一个问题。我要怎样设置控制台的窗口大小呢?每次初始化貌似都是80*XX的。我会加分的,谢谢了了。
追答:

在你的代码里加上这两个函数就好:


COORD size = {80, 25};
SetConsoleScreenBufferSize(h,size);  // 重新设置缓冲区大小

SMALL_RECT rc = {0,0, 80-1, 25-1};        // 重置窗口位置和大小
SetConsoleWindowInfo(h,true ,&rc);

追问:
这样窗口就变小了,我要窗口变大.
追答:
...你把那个80和25改大点不就大了
追问:

改哪里,我改了不行么,能给我写写吗?

 

追问:

嗯,可以了   我知道了,可是怎样能让它的大小固定不变呢?

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有