Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Lập trình C++ | clrscr, gotoxy, SetColor, SetBGColor, getch, ... trên VC++ và DEV-C

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Mặc định Lập trình C++ | clrscr, gotoxy, SetColor, SetBGColor, getch, ... trên VC++ và DEV-C

    Dạo này có nhiều bạn hỏi tứ tung mấy hàm này hôm nay Dr ngồi gom chúng lại và đưa ra đây để mọi người tiện theo dõi sau này.

    1. Hàm getch();
    Trong VC++, bạn chỉ cần thêm dấu gạch dưới vào trước tên hàm là OK. _getch(); Hàm này nằm trong thư viện conio.h của VC++.

    2. Hàm clrscr();
    Visual C++ Code:
    1.  void clrscr(void)
    2. {
    3.     CONSOLE_SCREEN_BUFFER_INFO  csbiInfo;                  
    4.     HANDLE  hConsoleOut;
    5.     COORD   Home = {0,0};
    6.     DWORD   dummy;
    7.  
    8.     hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE);
    9.     GetConsoleScreenBufferInfo(hConsoleOut,&csbiInfo);
    10.  
    11.     FillConsoleOutputCharacter(hConsoleOut,' ',csbiInfo.dwSize.X * csbiInfo.dwSize.Y,Home,&dummy);
    12.    csbiInfo.dwCursorPosition.X = 0;                        
    13.    csbiInfo.dwCursorPosition.Y = 0;                        
    14.    SetConsoleCursorPosition(hConsoleOut,csbiInfo.dwCu rsorPosition);   
    15. }

    3. Hàm gotoxy();
    Visual C++ Code:
    1. void gotoxy(short x,short y)
    2. {
    3.     HANDLE hConsoleOutput;
    4.     COORD Cursor_an_Pos = { x,y};
    5.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    6.     SetConsoleCursorPosition(hConsoleOutput , Cursor_an_Pos);
    7. }

    4. Hàm SetColor(...);
    Visual C++ Code:
    1. void SetColor(WORD color)
    2. {
    3.     HANDLE hConsoleOutput;
    4.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    5.  
    6.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    7.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    8.  
    9.     WORD wAttributes = screen_buffer_info.wAttributes;
    10.     color &= 0x000f;
    11.     wAttributes &= 0xfff0;
    12.     wAttributes |= color;
    13.  
    14.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    15. }

    5. SetBGColor (...);
    Visual C++ Code:
    1. void SetBGColor(WORD color)
    2. {
    3.     HANDLE hConsoleOutput;
    4.     hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
    5.  
    6.     CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info;
    7.     GetConsoleScreenBufferInfo(hConsoleOutput, &screen_buffer_info);
    8.  
    9.     WORD wAttributes = screen_buffer_info.wAttributes;
    10.     color &= 0x000f;
    11.     color <<= 4;
    12.     wAttributes &= 0xff0f;
    13.     wAttributes |= color;
    14.  
    15.     SetConsoleTextAttribute(hConsoleOutput, wAttributes);
    16. }

    Các hàm này Dr cũng chỉ gom lại chúng từ các bài viết đã gửi lên diễn đàn đó. Hi vọng là lần sau bạn vui lòng tìm kiếm trước khi hỏi, chứ spam loạn lên thật là ngán đó.

    Bạn có thể đưa nó vào một file header để sử dụng sau này. Ví dụ: my_conio.h, hay dr_conio.h, ....

    Lư ý: Các hàm trên có sử dụng thư viên windows.h do đó khi sử dụng bạn cần phải include thư viện này vào.

    Chúc các thành viên cộng đồng C Việt thành công!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    Bổ xung tí : clrscr(); trong VC++ thay bằng system("cls"); #include <stdlib.h>
    What you see is never what you get...

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Bổ xung nữa :Có thể sử dụng ASM để xây dựng các hàm clrscr,gotoxy,getch,blink(hàm làm chữ nhấp nháy)...

    Lưu ý: Đây là diễn đàn hướng dẫn, đã nói là phải xuất code nhé. (Nhắc nhở bởi Dreaminess)
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 11-12-2007 lúc 11:53 PM. Lý do: Nhắc nhở

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Lúc viết console ko có mấy cái hàm này nên tớ cũng tự tạo thư viện riêng. Cũng chật vật lắm. Giờ mấy cậu có sẵn người viết cho thế này thật sướng.

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    711

    Không biết post code Delphi được không, nhưng chắc không sao. Các cậu có thể dựa vào đó port lại qua C/C++, chỉ khác syntax thôi, API dùng như nhau.
    Dưới đây là source code của thư viện CRT32, dùng cho Delphi/Pascal for Win (do CRT unit chỉ có trong Pascal for DOS: TP/BP).
    Delphi Code:
    1. {$R-}
    2. unit CRT32;
    3. {# freeware}
    4. {# version 1.0.0127}
    5. {# Date 18.01.1997}
    6. {# Author Frank Zimmer}
    7. {# description
    8.  Copyright © 1997, Frank Zimmer, 100703.1602@compuserve.com
    9.  Fixes Copyright © 2001 Juancarlo Añez, juanco@suigeneris.org
    10.  Version: 1.0.0119
    11.  Date:    18.01.1997
    12.  
    13.  an Implementation of Turbo Pascal CRT-Unit for Win32 Console Subsystem
    14.  tested with Windows NT 4.0
    15.  At Startup you get the Focus to the Console!!!!
    16.  
    17.  ( with * are not in the original Crt-Unit):
    18.  Procedure and Function:
    19.    ClrScr
    20.    ClrEol
    21.    WhereX
    22.    WhereY
    23.    GotoXY
    24.    InsLine
    25.    DelLine
    26.    HighVideo
    27.    LowVideo
    28.    NormVideo
    29.    TextBackground
    30.    TextColor
    31.    Delay             // use no processtime
    32.    KeyPressed
    33.    ReadKey           // use no processtime
    34.    Sound             // with Windows NT your could use the Variables SoundFrequenz, SoundDuration
    35.    NoSound
    36.    *TextAttribut     // Set TextBackground and TextColor at the same time, usefull for Lastmode
    37.    *FlushInputBuffer // Flush the Keyboard and all other Events
    38.    *ConsoleEnd       // output of 'Press any key' and wait for key input when not pipe
    39.    *Pipe             // True when the output is redirected to a pipe or a file
    40.  
    41.  Variables:
    42.    WindMin           // the min. WindowRect
    43.    WindMax           // the max. WindowRect
    44.    *ViewMax          // the max. ConsoleBuffer start at (1,1);
    45.    TextAttr          // Actual Attributes only by changing with this Routines
    46.    LastMode          // Last Attributes only by changing with this Routines
    47.    *SoundFrequenz    // with Windows NT your could use these Variables
    48.    *SoundDuration    // how long bells the speaker  -1 until ??, default = -1
    49.    *HConsoleInput    // the Input-handle;
    50.    *HConsoleOutput   // the Output-handle;
    51.    *HConsoleError    // the Error-handle;
    52.  
    53.  This Source is freeware, have fun :-)
    54.  
    55.  History
    56.    18.01.97   the first implementation
    57.    23.01.97   Sound, delay, Codepage inserted and setfocus to the console
    58.    24.01.97   Redirected status
    59. }
    60.  
    61. interface
    62. uses
    63.   Windows, Messages;
    64.  
    65. {$IFDEF WIN32}
    66. const
    67.   Intense = FOREGROUND_INTENSITY or BACKGROUND_INTENSITY;
    68.   Black = 0;
    69.   Blue = FOREGROUND_BLUE or BACKGROUND_BLUE;
    70.   Green = FOREGROUND_GREEN or BACKGROUND_GREEN;
    71.   Cyan = Blue and Green;
    72.   Red = FOREGROUND_RED or BACKGROUND_RED;
    73.   Magenta = Blue or Red;
    74.   Brown = Green or Red;
    75.   LightGray = Blue or Green or Red;
    76.   DarkGray = LightGray;
    77.   LightBlue = Blue or Intense;
    78.   LightGreen = Green or Intense;
    79.   LightCyan = Cyan or Intense;
    80.   LightRed = Red or Intense;
    81.   LightMagenta = Magenta or Intense;
    82.   Yellow = Brown or Intense;
    83.   White = LightGray or Intense;
    84.  
    85.   BackgroundMask = BACKGROUND_BLUE or BACKGROUND_GREEN or BACKGROUND_RED or BACKGROUND_INTENSITY;
    86.   ForegroundMask = FOREGROUND_BLUE or FOREGROUND_GREEN or FOREGROUND_RED or FOREGROUND_INTENSITY;
    87.  
    88. function WhereX: integer;
    89. function WhereY: integer;
    90. procedure ClrEol;
    91. procedure ClrScr;
    92. procedure InsLine;
    93. procedure DelLine;
    94. procedure GotoXY(const x, y: integer);
    95. procedure HighVideo;
    96. procedure LowVideo;
    97. procedure NormVideo;
    98. procedure TextBackground(const Color: word);
    99. procedure TextColor(const Color: word);
    100. procedure TextAttribut(const Color, Background: word);
    101. procedure Delay(const ms: integer);
    102. function KeyPressed: boolean;
    103. function ReadKey: Char;
    104. procedure Sound;
    105. procedure NoSound;
    106. procedure ConsoleEnd;
    107. procedure FlushInputBuffer;
    108. function Pipe: boolean;
    109.  
    110. procedure Restore;
    111.  
    112. procedure SetWindowTo(R: TSmallRect);
    113.  
    114. procedure More(const Text: string);
    115.  
    116. var
    117.   HConsoleInput: tHandle;
    118.   HConsoleOutput: thandle;
    119.   HConsoleError: Thandle;
    120.   WindMin: tcoord;
    121.   WindMax: tcoord;
    122.   ViewMax: tcoord;
    123.   TextAttr: Word;
    124.   LastMode: Word;
    125.   SoundFrequenz: Integer;
    126.   SoundDuration: Integer;
    127.  
    128. type
    129.   PD3InputRecord = ^TD3InputRecord;
    130.   TD3InputRecord = record
    131.     EventType: Word;
    132.     case Integer of
    133.       0: (KeyEvent: TKeyEventRecord);
    134.       1: (MouseEvent: TMouseEventRecord);
    135.       2: (WindowBufferSizeEvent: TWindowBufferSizeRecord);
    136.       3: (MenuEvent: TMenuEventRecord);
    137.       4: (FocusEvent: TFocusEventRecord);
    138.   end;
    139.  
    140. {$ENDIF win32}
    141.  
    142. implementation
    143. {$IFDEF win32}
    144. uses Classes, SysUtils;
    145.  
    146. var
    147.   StartAttr: word;
    148.   OldCP: integer;
    149.   CrtPipe: Boolean;
    150.   German: boolean;
    151.  
    152. procedure ClrEol;
    153. var
    154.   tC: tCoord;
    155.   Len, Nw: LongWord;
    156.   Cbi: TConsoleScreenBufferInfo;
    157. begin
    158.   GetConsoleScreenBufferInfo(HConsoleOutput, cbi);
    159.   len := cbi.dwsize.x - cbi.dwcursorposition.x;
    160.   tc.x := cbi.dwcursorposition.x;
    161.   tc.y := cbi.dwcursorposition.y;
    162.   FillConsoleOutputAttribute(HConsoleOutput, textattr, len, tc, nw);
    163.   FillConsoleOutputCharacter(HConsoleOutput, #32, len, tc, nw);
    164. end;
    165.  
    166. procedure ClrScr;
    167. var
    168.   tc: tcoord;
    169.   nw: LongWord;
    170.   cbi: TConsoleScreenBufferInfo;
    171. begin
    172.   getConsoleScreenBufferInfo(HConsoleOutput, cbi);
    173.   tc.x := 0;
    174.   tc.y := 0;
    175.   FillConsoleOutputAttribute(HConsoleOutput, textattr, cbi.dwsize.x * cbi.dwsize.y, tc, nw);
    176.   FillConsoleOutputCharacter(HConsoleOutput, #32, cbi.dwsize.x * cbi.dwsize.y, tc, nw);
    177.   setConsoleCursorPosition(hconsoleoutput, tc);
    178. end;
    179.  
    180. function WhereX: integer;
    181. var
    182.   cbi: TConsoleScreenBufferInfo;
    183. begin
    184.   getConsoleScreenBufferInfo(HConsoleOutput, cbi);
    185.   result := tcoord(cbi.dwCursorPosition).x + 1
    186. end;
    187.  
    188. function WhereY: integer;
    189. var
    190.   cbi: TConsoleScreenBufferInfo;
    191. begin
    192.   getConsoleScreenBufferInfo(HConsoleOutput, cbi);
    193.   result := tcoord(cbi.dwCursorPosition).y + 1
    194. end;
    195.  
    196. procedure GotoXY(const x, y: integer);
    197. var
    198.   coord: tcoord;
    199. begin
    200.   coord.x := x - 1;
    201.   coord.y := y - 1;
    202.   setConsoleCursorPosition(hconsoleoutput, coord);
    203. end;
    204.  
    205. procedure InsLine;
    206. var
    207.   cbi: TConsoleScreenBufferInfo;
    208.   ssr: tsmallrect;
    209.   coord: tcoord;
    210.   ci: tcharinfo;
    211.   nw: LongWord;
    212. begin
    213.   getConsoleScreenBufferInfo(HConsoleOutput, cbi);
    214.   coord := cbi.dwCursorPosition;
    215.   ssr.left := 0;
    216.   ssr.top := coord.y;
    217.   ssr.right := cbi.srwindow.right;
    218.   ssr.bottom := cbi.srwindow.bottom;
    219.   ci.asciichar := #32;
    220.   ci.attributes := cbi.wattributes;
    221.   coord.x := 0;
    222.   coord.y := coord.y + 1;
    223.   ScrollConsoleScreenBuffer(HconsoleOutput, ssr, nil, coord, ci);
    224.   coord.y := coord.y - 1;
    225.   FillConsoleOutputAttribute(HConsoleOutput, textattr, cbi.dwsize.x * cbi.dwsize.y, coord, nw);
    226. end;
    227.  
    228. procedure DelLine;
    229. var
    230.   cbi: TConsoleScreenBufferInfo;
    231.   ssr: tsmallrect;
    232.   coord: tcoord;
    233.   ci: tcharinfo;
    234.   nw: LongWord;
    235. begin
    236.   getConsoleScreenBufferInfo(HConsoleOutput, cbi);
    237.   coord := cbi.dwCursorPosition;
    238.   ssr.left := 0;
    239.   ssr.top := coord.y + 1;
    240.   ssr.right := cbi.srwindow.right;
    241.   ssr.bottom := cbi.srwindow.bottom;
    242.   ci.asciichar := #32;
    243.   ci.attributes := cbi.wattributes;
    244.   coord.x := 0;
    245.   coord.y := coord.y;
    246.   ScrollConsoleScreenBuffer(HconsoleOutput, ssr, nil, coord, ci);
    247.   FillConsoleOutputAttribute(HConsoleOutput, textattr, cbi.dwsize.x * cbi.dwsize.y, coord, nw);
    248. end;
    249.  
    250. procedure TextBackground(const Color: word);
    251. begin
    252.   LastMode := TextAttr;
    253.   textattr := Color and BackgroundMask;
    254.   SetConsoleTextAttribute(hconsoleoutput, textattr);
    255. end;
    256.  
    257. procedure TextColor(const Color: word);
    258. begin
    259.   LastMode := TextAttr;
    260.   textattr := color and ForegroundMask;
    261.   SetConsoleTextAttribute(hconsoleoutput, textattr);
    262. end;
    263.  
    264. procedure TextAttribut(const Color, Background: word);
    265. begin
    266.   LastMode := TextAttr;
    267.   textattr := (color and ForegroundMask) or (Background and BackgroundMask);
    268.   SetConsoleTextAttribute(hconsoleoutput, textattr);
    269. end;
    270.  
    271. procedure Restore;
    272. begin
    273.   SetConsoleTextAttribute(hconsoleoutput, LastMode);
    274.   textattr := LastMode;
    275. end;
    276.  
    277. procedure HighVideo;
    278. begin
    279.   LastMode := TextAttr;
    280.   textattr := textattr or $8;
    281.   SetConsoleTextAttribute(hconsoleoutput, textattr);
    282. end;
    283.  
    284. procedure LowVideo;
    285. begin
    286.   LastMode := TextAttr;
    287.   textattr := textattr and $F7;
    288.   SetConsoleTextAttribute(hconsoleoutput, textattr);
    289. end;
    290.  
    291. procedure NormVideo;
    292. begin
    293.   LastMode := TextAttr;
    294.   textattr := startAttr;
    295.   SetConsoleTextAttribute(hconsoleoutput, textattr);
    296. end;
    297.  
    298. procedure FlushInputBuffer;
    299. begin
    300.   FlushConsoleInputBuffer(hconsoleinput)
    301. end;
    302.  
    303. function keypressed: boolean;
    304. var
    305.   InputRec: array[1..32] of TInputRecord;
    306.   i,
    307.     NumRead: LongWord;
    308.   NEvents: DWORD;
    309. begin
    310.   Result := False;
    311.   if GetNumberOfConsoleInputEvents(HConsoleInput, NEvents)
    312.     and (NEvents > 0)
    313.     and PeekConsoleInput(HConsoleInput, InputRec[1], 32, NumRead)
    314.     and (NumRead > 0) then
    315.     for i := 1 to NumRead do
    316.       if (InputRec[i].EventType = KEY_EVENT)
    317.         and (PD3InputRecord(@InputRec[i]).KeyEvent.bKeyDown) then
    318.       begin
    319.         Result := True;
    320.         Exit
    321.       end
    322. end;
    323.  
    324. function ReadKey: Char;
    325. var
    326.   NumRead: DWORD;
    327.   InputRec: TInputRecord;
    328. begin
    329.   while not ReadConsoleInput(HConsoleInput, InputRec, 1, NumRead)
    330.     or (InputRec.EventType <> KEY_EVENT)
    331.     or (not PD3InputRecord(@InputRec).KeyEvent.bKeyDown) do
    332.   begin
    333.   end;
    334.   Result := PD3InputRecord(@InputRec).KeyEvent.AsciiChar
    335. end;
    336.  
    337. procedure delay(const ms: integer);
    338. begin
    339.   sleep(ms);
    340. end;
    341.  
    342. procedure Sound;
    343. begin
    344.   windows.beep(SoundFrequenz, soundduration);
    345. end;
    346.  
    347. procedure NoSound;
    348. begin
    349.   windows.beep(soundfrequenz, 0);
    350. end;
    351.  
    352. procedure ConsoleEnd;
    353. begin
    354.   if isconsole and not crtpipe then
    355.   begin
    356.     if wherex > 1 then writeln;
    357.     textcolor(green);
    358.     setfocus(GetCurrentProcess);
    359.     if german then
    360.       write('Bitte eine Taste drücken!')
    361.     else
    362.       write('Press any key!');
    363.     normvideo;
    364.     FlushInputBuffer;
    365.     ReadKey;
    366.     FlushInputBuffer;
    367.   end;
    368. end;
    369.  
    370. function Pipe: boolean;
    371. begin
    372.   result := crtpipe;
    373. end;
    374.  
    375. procedure init;
    376. var
    377.   cbi: TConsoleScreenBufferInfo;
    378.   tc: tcoord;
    379. begin
    380.   SetActiveWindow(0);
    381.   HConsoleInput := GetStdHandle(STD_InPUT_HANDLE);
    382.   if (HConsoleInput = INVALID_HANDLE_VALUE)
    383.     or (HConsoleInput = 0) then
    384.   begin
    385.     AllocConsole;
    386.     HConsoleInput := GetStdHandle(STD_InPUT_HANDLE);
    387.   end;
    388.   HConsoleOutput := GetStdHandle(STD_OUTPUT_HANDLE);
    389.   HConsoleError := GetStdHandle(STD_Error_HANDLE);
    390.   if getConsoleScreenBufferInfo(HConsoleOutput, cbi) then
    391.   begin
    392.     TextAttr := cbi.wAttributes;
    393.     StartAttr := cbi.wAttributes;
    394.     lastmode := cbi.wAttributes;
    395.     tc.x := cbi.srwindow.left + 1;
    396.     tc.y := cbi.srwindow.top + 1;
    397.     windmin := tc;
    398.     ViewMax := cbi.dwsize;
    399.     tc.x := cbi.srwindow.right + 1;
    400.     tc.y := cbi.srwindow.bottom + 1;
    401.     windmax := tc;
    402.     crtpipe := false;
    403.   end
    404.   else
    405.     crtpipe := true;
    406.   SoundFrequenz := 1000;
    407.   SoundDuration := -1;
    408.   oldCp := GetConsoleoutputCP;
    409.  //SetConsoleoutputCP(1252);
    410.   german := $07 = (LoWord(GetUserDefaultLangID) and $3FF);
    411. end;
    412.  
    413. procedure SetWindowTo(R: TSmallRect);
    414. begin
    415.   SetConsoleWindowInfo(hConsoleOutput, TRUE, R)
    416. end;
    417.  
    418. procedure More(const Text :string);
    419. var
    420.   S :TStrings;
    421.   i :Integer;
    422. begin
    423.   S := TStringList.Create;
    424.   try
    425.     S.Text := Text;
    426.     i := 0;
    427.     while i < S.Count do
    428.     begin
    429.       if (Pos('---', S[i]) <> 1) then
    430.       begin
    431.         Writeln(S[i]);
    432.         Inc(i);
    433.       end
    434.       else
    435.       begin
    436.         Write(Format('-- More (%d%%) --'#13, [100*(i+2) div S.Count]));
    437.         Inc(i);
    438.         repeat until ReadKey in [' ',#13,#10, 'q'];
    439.         writeln(#13' ': 70);
    440.       end;
    441.     end;
    442.   finally
    443.     S.Free;
    444.   end;
    445. end;
    446.  
    447. initialization
    448.   init;
    449. finalization
    450.   SetConsoleoutputCP(oldcp);
    451. {$ENDIF win32}
    452. end.
    Còn không thì khi nào rãnh tui sẽ port cho, bận kiếm miếng ăn quá, sáng nay mệt mệt nên lướt Web 1 chút.

  6. #6
    Ngày gia nhập
    12 2007
    Bài viết
    7

    Mặc định Lập trình C++ | clrscr, gotoxy, SetColor, SetBGColor, getch, ... trên VC++ và DEV-C

    Cho em hỏi lệnh gotoxy trong C làm việc thế nào vậy? có ví dụ nữa thì tốt wa Em mới học mà thầy ở trường dạy toàn bỏ wa mấy cái nhỏ ko hà....

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Có viết được hàm này trên BC for Win ko nhỉ ????

  8. #8
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Trích dẫn Nguyên bản được gửi bởi vinhphat2808 Xem bài viết
    Cho em hỏi lệnh gotoxy trong C làm việc thế nào vậy? có ví dụ nữa thì tốt wa Em mới học mà thầy ở trường dạy toàn bỏ wa mấy cái nhỏ ko hà....
    gotoxy(x,y)// Tức là hàm cho phép con trỏ di chuyển đến tọa độ (x,y) trong chế độ textmode của màn hình cửa sổ.

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    Có viết được hàm này trên BC for Win ko nhỉ ????
    Có đó, nhưng mà ít người để ý đến việc này. Dr cũng không rõ nữa, nhưng Dr sẽ nghiên cứu cùng các bạn và để nó ở một đề tài hướng dẫn khác.

    Bổ sung thêm 2 hàm wherex và wherey:

    Visual C++ Code:
    1. int wherex( void )
    2. {
    3.   CONSOLE_SCREEN_BUFFER_INFO coninfo;
    4.   GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    5.   return coninfo.dwCursorPosition.X;
    6. }
    7.  
    8. int wherey( void )
    9. {
    10.   CONSOLE_SCREEN_BUFFER_INFO coninfo;
    11.   GetConsoleScreenBufferInfo (STDOUT, &coninfo);
    12.   return coninfo.dwCursorPosition.Y;
    13. }

    Cheers!
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  9. #9
    Ngày gia nhập
    07 2010
    Bài viết
    8

    Trích dẫn Nguyên bản được gửi bởi Kevin Hoang Xem bài viết
    Dạo này có nhiều bạn hỏi tứ tung mấy hàm này hôm nay Dr ngồi gom chúng lại và đưa ra đây để mọi người tiện theo dõi sau này.

    Các hàm này Dr cũng chỉ gom lại chúng từ các bài viết đã gửi lên diễn đàn đó. Hi vọng là lần sau bạn vui lòng tìm kiếm trước khi hỏi, chứ spam loạn lên thật là ngán đó.

    Bạn có thể đưa nó vào một file header để sử dụng sau này. Ví dụ: my_conio.h, hay dr_conio.h, ....

    Lư ý: Các hàm trên có sử dụng thư viên windows.h do đó khi sử dụng bạn cần phải include thư viện này vào.

    Chúc các thành viên cộng đồng C Việt thành công!


    Tại sao mình làm như bạn nói đưa hàm thư viện này vào file.h trong project nó lại nói là no such file or diectory?

  10. #10
    Ngày gia nhập
    01 2010
    Nơi ở
    до свидания!
    Bài viết
    1,766

    Trích dẫn Nguyên bản được gửi bởi huydaibang Xem bài viết
    Tại sao mình làm như bạn nói đưa hàm thư viện này vào file.h trong project nó lại nói là no such file or diectory?
    Quăng cái project của cậu lên xem nào; cậu phải đặt các file.h này cùng thư mục với project... (Hoặc có chỉ thị cho trình biên dịch tìm được các .h này).

Các đề tài tương tự

  1. Gotoxy trên VC++?
    Gửi bởi alibaba314 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 09-05-2009, 12:36 AM
  2. Không sử dụng được câu lệnh clrscr và gotoxy
    Gửi bởi banhbaochay trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 21-08-2008, 11:53 AM
  3. Lập trình C++ | Hàm tự tạo gotoxy(int, int ) và clrscr()
    Gửi bởi rox_rook trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 24-07-2008, 09:07 AM
  4. Các hàm clrscr, gotoxy, textcolor, textBKcolor, ... trong lập trình C#
    Gửi bởi Kevin Hoang trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 11
    Bài viết cuối: 24-01-2008, 09:56 AM
  5. Lệnh gotoxy trên Dev C?
    Gửi bởi ente trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 09-01-2008, 10:45 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn