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

我住包子山

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

[基礎(chǔ)]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 閱讀(485) 評論(1)  編輯 收藏 引用 所屬分類: C++

Feedback

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

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            韩国av一区二区三区| 另类成人小视频在线| 久久综合久久久久88| 亚洲一区视频| 欧美成人精品一区| 久久久久久999| 国产精品男人爽免费视频1| 亚洲激情第一区| 国产一区二区三区观看| 一本色道久久综合亚洲91| 亚洲激情一区二区三区| 久久精品欧洲| 久久一本综合频道| 国产偷自视频区视频一区二区| 99亚洲视频| 在线亚洲自拍| 欧美日韩美女在线| 99re在线精品| 亚洲一级在线| 欧美特黄视频| 99视频精品免费观看| 亚洲精品国产精品国自产观看| 久久免费高清| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美fxxxxxx另类| 久久久成人网| 国产一区二区视频在线观看 | 久久天天躁狠狠躁夜夜爽蜜月| 香港成人在线视频| 国产精品亚发布| 亚洲欧美在线一区二区| 欧美一级视频精品观看| 国产日韩亚洲欧美精品| 亚洲欧美国产毛片在线| 欧美在线播放视频| 国模叶桐国产精品一区| 久久九九有精品国产23| 蜜臀a∨国产成人精品 | 激情五月***国产精品| 久久精品二区亚洲w码| 久久婷婷国产综合精品青草 | 国产无遮挡一区二区三区毛片日本| 亚洲综合999| 久久久久成人精品| 在线成人激情视频| 欧美阿v一级看视频| 亚洲人精品午夜| 亚洲一区激情| 黄色精品在线看| 欧美福利电影网| 99这里只有精品| 久久久久久久综合| 亚洲国产精品成人va在线观看| 欧美激情精品久久久久久久变态| 99综合视频| 久久国产高清| 亚洲国产精品激情在线观看| 欧美精品自拍| 亚洲欧美一区二区精品久久久| 久久男人资源视频| 99精品视频网| 国产一区二区精品久久91| 久热成人在线视频| 亚洲午夜精品一区二区| 免费成人在线视频网站| 亚洲一区二区三区中文字幕| 国产一区二区三区四区在线观看 | 亚洲精品视频在线播放| 国产精品成人一区二区| 欧美自拍偷拍| 日韩网站免费观看| 久久视频这里只有精品| 亚洲视频二区| 1769国产精品| 国产精品入口日韩视频大尺度| 裸体女人亚洲精品一区| 亚洲淫性视频| 亚洲日本免费电影| 久久精品视频导航| 一本久道久久综合中文字幕| 国产一区二区三区网站| 欧美视频免费在线| 欧美11—12娇小xxxx| 久久高清免费观看| 中日韩美女免费视频网站在线观看 | 国内成+人亚洲| 欧美午夜不卡| 欧美激情综合五月色丁香| 欧美在线日韩| 亚洲天堂第二页| 洋洋av久久久久久久一区| 欧美激情精品久久久久| 久久精品日产第一区二区| 亚洲一区图片| 亚洲视频欧美视频| 亚洲免费激情| 91久久视频| 亚洲日本欧美日韩高观看| 黄色资源网久久资源365| 国产精品视频在线观看| 国产精品99免费看| 欧美网站在线观看| 欧美日韩在线三级| 欧美午夜视频| 欧美系列精品| 欧美丝袜一区二区三区| 欧美日韩国产美女| 欧美黄色aa电影| 欧美精品日韩综合在线| 欧美va日韩va| 欧美日本不卡| 欧美午夜无遮挡| 国产精品久久久久久久久久免费看| 欧美日韩国产在线一区| 欧美区视频在线观看| 欧美日韩国产天堂| 欧美日韩高清不卡| 国产精品国产a| 国产精品爽爽爽| 国产色视频一区| 黄色日韩网站| 亚洲第一网站免费视频| 亚洲国产欧美在线| 99ri日韩精品视频| 亚洲午夜精品国产| 欧美中在线观看| 久久天堂精品| 亚洲国产精品电影在线观看| 91久久综合| 亚洲影视中文字幕| 久久精品成人一区二区三区| 久久综合中文色婷婷| 欧美日韩国产丝袜另类| 国产精自产拍久久久久久| 国产一区二区按摩在线观看| 亚洲国产精品v| 亚洲系列中文字幕| 久久亚洲欧洲| 91久久黄色| 性欧美18~19sex高清播放| 久久国产一二区| 欧美激情国产日韩| 国产麻豆9l精品三级站| 在线观看欧美黄色| 中文精品在线| 久久久99免费视频| 亚洲激情不卡| 欧美一区二区三区免费大片| 久久夜色精品一区| 欧美视频中文一区二区三区在线观看| 国产日韩在线亚洲字幕中文| 亚洲人成网站在线播| 香港久久久电影| 亚洲高清自拍| 午夜视频在线观看一区二区| 欧美aaa级| 国产亚洲一区二区精品| 一区二区免费在线观看| 久久伊人亚洲| 亚洲视频网站在线观看| 噜噜噜噜噜久久久久久91| 国产精品久久久久久五月尺| 在线观看日韩一区| 久久国产精品久久精品国产| 亚洲国产精品电影在线观看| 欧美一区二区在线观看| 欧美色图五月天| 亚洲欧洲三级| 久久精品国产91精品亚洲| 日韩视频久久| 美日韩免费视频| 国内精品写真在线观看| 亚洲欧美欧美一区二区三区| 欧美电影美腿模特1979在线看| 午夜日韩在线| 国产精品成av人在线视午夜片| 亚洲日本久久| 久久婷婷国产综合国色天香 | 亚洲伦理自拍| 欧美成人精品在线观看| 狠狠色丁香婷综合久久| 欧美中文字幕在线播放| 亚洲视频免费| 欧美另类亚洲| 亚洲精品一品区二品区三品区| 欧美xx视频| 久久激情综合| 国产一区二区精品在线观看| 欧美一区二区大片| 制服丝袜激情欧洲亚洲| 欧美午夜a级限制福利片| 一本一本久久a久久精品综合妖精| 欧美激情bt| 免费欧美电影| 亚洲国产中文字幕在线观看| 女仆av观看一区| 蜜桃av噜噜一区| 亚洲精品国精品久久99热| 欧美v日韩v国产v| 你懂的国产精品|