Làm quen với Visual C
Trang 1Làm quen với Visual C++
Chế độ console Các bước thực hiện để vào tạo một chương trình trên Visual C++
Chạy Visual C++
Tạo một project mới
Chọn chế độ console
Chọn thư mục lưu bài
Đặt tên project là tên chương trình muốn tạo (ở đây là hello)
Chọn kiểu [Simple application] hoặc [A Hello Word]
Ta có được chương trình Visual C++ chạy trên mode console
Nhấn Ctrl+F5 để chạy chương trình (để chạy ở chế độ debug, nhấn F5)
Cách viết một chương trình ở chế độ console cũng giống như lập trình ở trên DOS
Hàm main sẽ được gọi khi chương trình được thi hành
Phần lớn các hàm trên BC 3.1 trên DOS vẫn chạy tốt trên Visual C++ ở chế độ console như printf, scanf,
Thao tác trên màn hình console mode
Chú ý rằng ở trên Windows mode console được giả lập gần giống với trên DOS nhưng không phải bất cứ lệnh nào trên màn hình DOS cũng chạy trên hình Windows console (ví dụ lệnh clrscr, gotoxy)
Thao tác trên màn hình console mode
Trước hết ta phải khai báo những biến sau trong chương trình
HANDLE hStdOut; /* Handle for console window */
Ngay khi khởi tạo chương trình (thường là ngay khi hàm main được gọi) ta chèn đoạn code khởi tạo này vào chương trình
hStdOut = GetStdHandle( STD_OUTPUT_HANDLE );
Trong đó biến hStdOut sẽ được dùng trong suốt chương trình để thao tác với màn hình console Nó cũng giống như file handle vậy Từ lúc này đây bạn có thể sử dụng các hàm
GetConsoleScreenBufferInfo, ReadConsoleInput, WriteConsole, WriteConsoleOutputCharacter để
thao tác trên màn hình
Hàm WriteConsoleOutputCharacter:
BOOL WriteConsoleOutputCharacter(
HANDLE hConsoleOutput, // handle to screen buffer
LPCTSTR lpCharacter, // characters
DWORD nLength, // number of characters to write
COORD dwWriteCoord, // first cell coordinates
LPDWORD lpNumberOfCharsWritten // number of cells written
Trang 2Ví dụ: đoạn code sau minh họa việc in biến c kiểu char ra màn hình tại vị trí (3, 4)
COORD coord = {3, 4} ;
DWORD result;
WriteConsoleOutputCharacter ( hStdOut , & c , , coord , & result );
Hàm GetConsoleScreenBufferInfo:
BOOL GetConsoleScreenBufferInfo(
HANDLE hConsoleOutput, // handle to screen buffer
PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
// screen buffer information
);
Sau đây là mô tả cấu trúc CONSOLE_SCREEN_BUFFER_INFO:
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
COORD dwSize ;
COORD dwCursorPosition ;
WORD wAttributes ;
SMALL_RECT srWindow ;
COORD dwMaximumWindowSize ;
} CONSOLE_SCREEN_BUFFER_INFO ;
Xem trong MSDN để biết rõ cấu trúc này
Ví dụ:
HANDLE hStdOut ; /* Handle for console window */
CONSOLE_SCREEN_BUFFER_INFO csbi ; /* Console information structure */
hStdOut = GetStdHandle ( STD_OUTPUT_HANDLE );
/* Get display screen's text row and column information */
GetConsoleScreenBufferInfo ( hStdOut , & csbi );
khi đó biến csbi.dwSize.X sẽ mô tả chiều dài màn hình.
Hàm đọc phím trên console mode
Ta dùng hàm _getch, cách thức sử dụng hàm này giống như hàm getch ở trên DOS, do đó phần
này sẽ không mô tả rõ cú pháp cũng như cách sử dụng (chú ý rằng phải include thư viện conio.h
để có thể sử dụng hàm này)
Kiểm tra phím Alt, Shift có đang được nhấn hay không
Ta dùng hàm GetAsyncKeyState để kiểm tra.
Ví dụ:
if ( GetAsyncKeyState ( VK_MENU ) < 0 )
printf ( "Alt duoc nhann" );
if ( GetAsyncKeyState ( VK_SHIFT ) < 0 )
printf ( "Shift duoc nhan" );