青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我住包子山

this->blog.MoveTo("blog.baozishan.in")

[基礎]Win32 Console Applications - Part 1. of 6

Win32 Console Applications - Part 1.

Hello World

Okay, hands up, who here started out with something like this, possibly in another language, possibly on another OS, but whatever, with something like that. I'm willing to bet there are a good few people who can say "yes, that was me". You don't really want to see the source do you? Oh all right then.

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

8 lines. Could be less, by why make things harder to read? This is really the great strength of a Windows Console Application, you really do not need to do much in order to make a working program. That is why I use consoles. If I want to test out a bit of non GUI code, and I don't have a suitable application I can use as a framework, I knock together a quick console application, and I'm sure just about every other Windows programmer does as well. The user interface only needs to be sophisticated enough to get the job done.

Some of the other tutorials on the site demostrate powerful techniques, but do it in a Console App because that's all that was needed.

Can you do anything else with a Console App? Of course, the answer is yes, you can, and these tutorials demostrate some of the things that can be done with a console. Believe it or not, a huge number of questions concerning consoles crop up in help forums every week, so people are interested. If you are, read on.

----------

What is a Console? It is a Window, a special kind, yes, but it is a Window. You will frequently hear these things called "DOS boxes" because DOS had a character based UI, but this term is incorrect. There is no DOS under the NT cored WIndows operating systems, (NT, 2000, XP), and yet you can use a console. Why? Because it is a Window. (There are actually DOS emulators for these platforms - but this is a totally unrelated topic.)

What makes a Console window special is that it is character based rather than pixel based. A normal window, like this browser window for example, (unless you're using a REALLY basic browser), is measured in pixels, each pixel is individually addressable and modifiable. With a character based medium, that is not the case, the smallest unit that can be addressed and thus modified is a character cell.

A console's display area consist of rows and columns of character cells. It is a grid or two dimensional array or matrix of cells, all these terms are in use - they amount ot the same thing. Traditionally, the character cell at the top left is the origin or "home" position, and is designated (0,0) in an imaginary (x,y) grid. The character cell to it's immediate right is (1,0), the next (2,0) and so on. The cell just below (0,0) is (0,1), the one below that (0,2) and so on. On a typical console there are 80 cell positions across the screen, and 25 down, thus on such a console, the bottom right cell will be (79,24) remembering the grid is zero based. The little picture below shows graphically the cell numbers of the upper left portion of a larger screen or the entire grid of a 4x4 console of course.

CellGrid

Incidently, the reason for chosing 80x25 is historical. In the days before graphical terminals were widely available, people used character based terminals called "Visual Display Units", or VDU's. These typically had an 80x25 screen layout. I was one of those who used these beasts.

----------

Each character cell can contain one and only one character. I'll illustrate an artifact of this below. I type 5 "w" characters, then on the line below, 5 "i" characters...

wwwww
iiiii

... notice the length of the lines. Assuming you are using a modern browser, you should see that the upper line is longer than the lower. Now I'll write a console app which does the same, here is the output...

FixedFont

... as you see, since each cell can only hold a single character, the last "i" character is directly below the last "w". There can be no proportional spacing in a console with the default font, (it is possible to simulate a very crude form of proportional spacing if only a few letters are used - but forget it - it's not worth the hassle).

Okay, so we've got a grid of cells, what is in a cell? Simply, a cell is another grid, each cell being 8 pixels wide and 12 high. The characters that make up the font must be represented within this grid including any spacing - that's right, the pixels of one cell lie directly adjacent to the pixels of the next. This is somewhat limiting, and accounts for the rather poor quality of the console font, but as we will see later, it does have some advantages. The pictures below show how the "w" and "i" characters are encoded into a cell.

w Grid i Grid

Notice the blank column on the right of the "w", this ensures that two adjacent "w" characters will have at least a single pixel space between them. If you look at the last picture, you will see that is the case. Also notice, the dot over the "i" does not go to the top of the cell, this ensures that any character on the line above an "i" that has a descender, an extension below the normal line, "y" for example, will still have at least a one pixel gap between the descender and a "high" character. Thus, normal characters are represented by 7x11 grids with a blank row at the top and a blank column on the right side.

The pixels marked with a "X" in the pictures above are rendered in the foreground colour, those in the empty pixels positions, in the background colour. By default, the foreground is white, the background black. Later on in the tutorial, I will show you how to change these colours, within limits.

----------

There is a one pixel wide gap around the outside edge of the consoles display area. This prevents the top, bottom and edge characters merging with the frame. You cannot write into this gap. Thus a console's display area is 2+(8x) pixels wide, where x is the number of character cells in a row, and 2+(12y) pixels high where y is the number of visible rows, (there may be more rows above or below the current view as determined by the position of the scroll bar).

I'm afraid this first page has really been rather a lot of dry theory. A lot of what you can do with consoles assumes you understand this material though, so read it through, and if later on in this tutorial, you find something that sounds weird, try reading this page again!

In the next part, I'll show you how to name your Console, obtain the consoles standard handles, move the cursor about, write blocks of characters and clear the screen.

posted on 2006-07-20 22:39 Gohan 閱讀(473) 評論(1)  編輯 收藏 引用 所屬分類: C++

Feedback

# re: [基礎]Win32 Console Applications - Part 1. of 6 2006-07-20 22:40 Gohan

來源于http://www.adrianxw.dk  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美激情国产日韩| 鲁大师影院一区二区三区| 国产精品毛片大码女人| 欧美国产专区| 欧美精品啪啪| 欧美色道久久88综合亚洲精品| 欧美日韩另类在线| 国产久一道中文一区| 国内激情久久| 亚洲精品美女91| 亚洲素人一区二区| 久久久久国产免费免费| 欧美大片一区二区| 日韩一级网站| 欧美一级精品大片| 免费高清在线一区| 欧美午夜激情视频| 一区二区在线观看视频| 日韩视频免费在线观看| 欧美一级淫片aaaaaaa视频| 久久伊人亚洲| 在线一区二区三区四区| 欧美在线看片a免费观看| 免费不卡中文字幕视频| 国产精品免费一区二区三区观看| 影音先锋亚洲精品| 亚洲欧美视频| 亚洲激情视频网| 日韩亚洲精品电影| 另类尿喷潮videofree| 国产精品免费一区二区三区观看| 亚洲成色999久久网站| 亚洲在线成人| 亚洲国产mv| 欧美激情成人在线视频| 国产专区综合网| 亚洲国产精品一区二区第四页av| 亚洲在线视频观看| 亚洲国产欧美一区二区三区久久 | 亚洲欧洲日本在线| 欧美一级在线视频| 日韩视频不卡中文| 欧美大片一区| 在线日本欧美| 久久久蜜臀国产一区二区| 日韩视频中午一区| 欧美福利电影网| 一区二区三区在线看| 性欧美大战久久久久久久久| 亚洲人成在线观看网站高清| 久久精品日韩欧美| 国产午夜亚洲精品理论片色戒| 亚洲视频每日更新| 亚洲美女黄色| 欧美久久久久免费| 亚洲精品美女久久7777777| 欧美成人午夜剧场免费观看| 久久狠狠一本精品综合网| 国产色综合久久| 欧美综合第一页| 午夜亚洲一区| 狠狠色综合网| 免费不卡视频| 久久中文在线| 亚洲精品国产精品国产自| 欧美风情在线观看| 欧美激情国产日韩| 亚洲网站啪啪| 亚洲一级在线观看| 国产日韩欧美中文| 久久综合999| 老鸭窝91久久精品色噜噜导演| 亚洲国产老妈| 日韩一级片网址| 国产伦精品一区二区三区高清版| 欧美亚洲视频在线看网址| 午夜久久久久久| 激情综合激情| 亚洲国产另类精品专区 | 欧美1区2区| 亚洲乱码久久| 这里只有精品电影| 国产亚洲aⅴaaaaaa毛片| 久久国产日韩欧美| 久久久免费av| 99热这里只有成人精品国产| 日韩午夜中文字幕| 国产日韩在线看| 欧美国产1区2区| 欧美日韩国产精品自在自线| 亚洲欧美在线另类| 欧美日韩亚洲视频| 欧美一区综合| 美女黄毛**国产精品啪啪| 亚洲乱码国产乱码精品精| 亚洲一区二区在| 在线观看三级视频欧美| 亚洲免费观看高清在线观看 | 久久夜色精品国产欧美乱| 亚洲麻豆一区| 久久高清福利视频| 在线一区二区视频| 久久在线免费| 欧美中文在线字幕| 欧美成人午夜免费视在线看片 | 亚洲国产精品一区制服丝袜| 亚洲三级电影在线观看 | 亚洲午夜一二三区视频| 久久九九热re6这里有精品| 一本一本久久| 久久人人97超碰精品888| 午夜精品久久久久久99热| 欧美大色视频| 欧美www在线| 国产视频欧美视频| 宅男精品视频| 在线亚洲激情| 欧美精品自拍| 亚洲福利在线看| 精品二区久久| 久久国产欧美| 久久久免费av| 国产资源精品在线观看| 性欧美18~19sex高清播放| 亚洲一区二区三区精品在线观看| 欧美成人四级电影| 亚洲成色精品| 亚洲二区精品| 老妇喷水一区二区三区| 久久米奇亚洲| 一区在线影院| 玖玖综合伊人| 欧美高清视频一区二区| 影音先锋在线一区| 久久精品国产综合| 美日韩精品免费| 在线免费观看视频一区| 久久精品九九| 欧美激情精品久久久久久免费印度 | 欧美一区二区精品在线| 香蕉久久国产| 国产欧美精品一区二区色综合| 亚洲一区在线免费| 久久精品国产亚洲一区二区| 国产日韩欧美自拍| 久久九九久精品国产免费直播| 久色成人在线| 亚洲精品国产精品国自产在线| 国产精品国码视频| 亚洲桃花岛网站| 先锋影音久久久| 国产日产欧产精品推荐色| 欧美亚洲三级| 欧美 日韩 国产 一区| 亚洲国产精品视频一区| 欧美精品福利视频| 一区二区三区蜜桃网| 午夜在线电影亚洲一区| 国产精品一区二区在线| 久久精品人人做人人爽| 亚洲高清视频在线| 亚洲综合色网站| 国产一区二区三区在线观看免费视频 | 亚洲精品国产精品久久清纯直播 | 欧美日韩在线一区| 亚洲一区二区不卡免费| 久久亚洲欧美| av成人免费| 国产日韩在线看| 欧美精品色综合| 欧美亚洲一区二区在线观看| 欧美aⅴ一区二区三区视频| 日韩系列欧美系列| 国产一区二区三区黄| 欧美精品在线一区二区| 久久国产精品久久国产精品| 亚洲国产福利在线| 欧美中文字幕在线观看| 日韩午夜一区| 亚洲国产成人精品女人久久久 | 一区二区三区国产| 久久一区二区三区四区五区| 日韩一级大片| 狠狠色2019综合网| 欧美性色视频在线| 久热re这里精品视频在线6| 在线亚洲精品| 亚洲人永久免费| 美女主播一区| 久久精品国产欧美激情| 宅男噜噜噜66国产日韩在线观看| 国模大胆一区二区三区| 欧美新色视频| 欧美日韩不卡合集视频| 久久综合狠狠综合久久综合88| 亚洲欧美日韩另类精品一区二区三区| 亚洲国产高清aⅴ视频| 欧美jizz19hd性欧美| 久久成人18免费观看| 亚洲一区二区在线播放|