以下のコードはダブルバッファリングをして文字の描画をするプログラムですが現在はまだシングルバッファです。
質問ですが「ダブルバッファリングをするにはどうしたらいいのでしょうか?」
cpp
1#include "stdio.h" 2#include "Windows.h" 3 4int main() 5{ 6 7 HANDLE hSrceen = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); 8 if (hSrceen == INVALID_HANDLE_VALUE) { 9 /* エラー処理 */ 10 } 11 12 const unsigned short MAX_WIDTH = 80; 13 const unsigned short MAX_HEIGHT = 25; 14// HANDLE hConsoleOut; 15 COORD coord = { MAX_WIDTH, MAX_HEIGHT }; 16 SMALL_RECT sr = { 0, 0, (MAX_WIDTH - 1), (MAX_HEIGHT - 1) }; 17 18 // バッファサイズ変更 19 SetConsoleScreenBufferSize(hSrceen, coord); 20 // ウィンドウサイズ変更 21 SetConsoleWindowInfo(hSrceen, TRUE, &sr); 22 23 24 SetConsoleActiveScreenBuffer(hSrceen); //有効化 25 26 while (true) { 27 const char* s ="ああああ"; 28 LPDWORD cell = 0; 29 30 31 32 33 // スクリーンバッファを指定して文字を書き込む 34 WriteConsole(hSrceen, (void*)s, strlen(s), cell, NULL); 35 36 37 38 DWORD wbyte; 39 COORD coord = {}; 40 TCHAR str[MAX_WIDTH * MAX_HEIGHT]; 41 42 ::SetConsoleCursorPosition(hSrceen, coord); 43 //WriteConsole(hSrceen, str, static_cast<DWORD>(MAX_WIDTH * MAX_HEIGHT), &wbyte, NULL); 44 FlushConsoleInputBuffer(hSrceen); 45 46 } 47 48 49 50 51 return 0; 52}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/12/09 10:06
2020/12/09 10:34 編集