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

我住包子山

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>
            国产欧美欧美| 久久综合九色综合久99| 国产午夜一区二区三区| 国产精品亚洲а∨天堂免在线| 国内一区二区在线视频观看| 国产精品美女久久| 国内一区二区三区| 亚洲精品国产品国语在线app| 国产精品美女| 在线欧美一区| 99在线精品免费视频九九视| 欧美在线视频一区| 亚洲福利小视频| 亚洲私拍自拍| 欧美精品v国产精品v日韩精品| 午夜精品福利在线观看| 欧美福利影院| 国产亚洲欧美一级| 亚洲一区尤物| 亚洲第一偷拍| 久久国产福利| 欧美视频中文字幕| 亚洲黄色免费电影| 久久免费视频在线| 亚洲午夜日本在线观看| 免费黄网站欧美| 国产乱码精品一区二区三区不卡| 欧美午夜不卡在线观看免费 | 午夜亚洲性色福利视频| 久久精品官网| 国产精品一区视频网站| 亚洲精品视频在线| 男人的天堂成人在线| 久久久久国产精品厨房| 欧美高清在线| 久久久.com| 国产午夜精品一区理论片飘花| 国产欧美精品一区| 亚洲欧美制服另类日韩| 日韩网站在线| 欧美激情一区二区三区四区| 国产精品天天看| 中文亚洲免费| 日韩小视频在线观看专区| 久久久久国产一区二区| 国产午夜精品在线| 久久国产精品一区二区| 亚洲综合二区| 国产欧美日韩视频在线观看| 亚洲愉拍自拍另类高清精品| 亚洲人成在线播放网站岛国| 欧美福利电影在线观看| 日韩亚洲欧美中文三级| 亚洲美女在线国产| 国产精品vvv| 午夜精品区一区二区三| 欧美一区二区三区啪啪| 狠狠色狠狠色综合日日小说| 麻豆久久婷婷| 欧美国产亚洲视频| 亚洲精品久久久久久久久久久| 亚洲香蕉网站| 一区二区三区毛片| 国产麻豆日韩| 毛片基地黄久久久久久天堂| 欧美不卡一卡二卡免费版| 在线视频欧美一区| 亚洲性图久久| 国产亚洲激情在线| 欧美成人一区二区三区在线观看| 正在播放日韩| 国产亚洲欧美日韩日本| 欧美二区在线播放| 欧美精品二区| 香蕉久久夜色精品国产使用方法 | 国产日韩精品在线播放| 久久夜色精品国产噜噜av| 欧美电影在线观看| 午夜精品在线观看| 久久久精品一区| 亚洲第一福利视频| 亚洲日本va在线观看| 国产日韩av高清| 亚洲第一黄网| 国产精品亚洲一区二区三区在线| 一区二区三区波多野结衣在线观看| 香蕉精品999视频一区二区 | 国产亚洲精品美女| 久久精品国产免费看久久精品| 一区二区三区视频在线 | 亚洲欧美春色| 国产欧美日韩在线视频| 一区二区三区日韩| 久久久久青草大香线综合精品| 欧美福利一区| 在线观看成人av| 久久久综合免费视频| 国产精品一区二区视频| 99精品国产一区二区青青牛奶| 国产精品久久综合| 久久综合国产精品| 亚洲天堂免费观看| 欧美91视频| 亚洲免费视频一区二区| 国产视频亚洲| 欧美成年人网| 亚洲一区二区三区四区五区黄| 久久精品免费电影| 一本色道久久综合亚洲精品不 | 999亚洲国产精| 国产偷国产偷精品高清尤物| 欧美日本簧片| 久久久久国产一区二区三区四区| av不卡免费看| 欧美风情在线观看| 久久久久国内| 亚洲综合国产激情另类一区| 亚洲国产专区| 国产在线不卡| 国产精品欧美精品| 欧美美女操人视频| 欧美成人国产va精品日本一级| 亚洲欧美成人综合| 亚洲一区二区动漫| 一本大道久久a久久精品综合| 欧美成人综合一区| 久久全球大尺度高清视频| 亚洲在线免费| 亚洲视频在线观看| 一个色综合av| 日韩一二在线观看| 亚洲精品久久久久中文字幕欢迎你| 国内精品一区二区| 国产亚洲欧美日韩美女| 国产欧美日韩精品专区| 国产精品久久久久久妇女6080| 欧美精品三区| 欧美精品色综合| 农夫在线精品视频免费观看| 久久偷看各类wc女厕嘘嘘偷窃| 性欧美暴力猛交另类hd| 午夜精品久久久久久久99樱桃| 亚洲香蕉伊综合在人在线视看| 一本色道久久| 亚洲天堂av在线免费| 亚洲午夜电影| 亚洲欧美日韩专区| 欧美在线视频观看| 久久久久久久尹人综合网亚洲| 久久只精品国产| 免费观看成人网| 欧美精品麻豆| 国产精品日日摸夜夜添夜夜av| 国产精品理论片在线观看| 国产欧美日韩综合一区在线观看 | 亚洲欧美视频| 久久国产一二区| 久久中文字幕一区| 国产精品区免费视频| 国产精品蜜臀在线观看| 国产精品久久久久9999吃药| 国产精品国码视频| 国产欧美亚洲视频| …久久精品99久久香蕉国产 | 国产精品中文在线| 国产一区二区日韩| 亚洲欧洲精品一区二区三区| 亚洲美女91| 午夜亚洲福利| 欧美成人国产va精品日本一级| 亚洲日本中文字幕| 亚洲欧美高清| 美女成人午夜| 国产精品国产福利国产秒拍| 韩国女主播一区| 99伊人成综合| 久久久免费精品视频| 亚洲欧洲综合另类| 午夜精品福利视频| 欧美精品999| 今天的高清视频免费播放成人| 在线成人av| 午夜欧美精品| 欧美激情国产日韩| 亚洲伊人伊色伊影伊综合网| 麻豆av福利av久久av| 国产欧美91| 亚洲午夜精品国产| 美腿丝袜亚洲色图| 亚洲亚洲精品在线观看| 欧美国产专区| 一区二区三区在线高清| 亚洲欧美另类国产| 欧美激情欧美狂野欧美精品| 午夜亚洲影视| 欧美视频国产精品| 亚洲精品国产欧美| 欧美不卡视频一区发布| 午夜一区二区三区在线观看| 国产精品高潮久久|