teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

タイトルと文章を修正しました。

2020/12/09 09:39

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- コンソールでダブルバッファリングをしたい。文字化けがする原因が知りたい
1
+ コンソールでダブルバッファリングをしたい
body CHANGED
@@ -1,8 +1,9 @@
1
1
  以下のコードはダブルバッファリングをして文字の描画をするプログラムですが現在はまだシングルバッファです。
2
- 質問ですがなぜ文字化け起きるのでしょうか? TCHARなどとして置き換え見ましたが提示画像のような文字化けが発生してしまいます。
2
+ 質問ですが「ダブルバッファリングにはどうしたらいいのでしょうか?
3
3
 
4
4
 
5
- ![イメージ説明](ddf938d4afceeeee06084a467bf07c71.png)
5
+ ![イメージ説明](285346975f00da8968cb48e3b0caebe9.png)
6
+
6
7
  ```cpp
7
8
  #include "stdio.h"
8
9
  #include "Windows.h"
@@ -30,14 +31,14 @@
30
31
  SetConsoleActiveScreenBuffer(hSrceen); //有効化
31
32
 
32
33
  while (true) {
33
- const TCHAR* s = (const TCHAR*)"ああああ";
34
+ const char* s ="ああああ";
34
35
  LPDWORD cell = 0;
35
36
 
36
37
 
37
38
 
38
39
 
39
40
  // スクリーンバッファを指定して文字を書き込む
40
- WriteConsole(hSrceen, (void*)s, strlen((char*)s), cell, NULL);
41
+ WriteConsole(hSrceen, (void*)s, strlen(s), cell, NULL);
41
42
 
42
43
 
43
44
 
@@ -46,9 +47,9 @@
46
47
  TCHAR str[MAX_WIDTH * MAX_HEIGHT];
47
48
 
48
49
  ::SetConsoleCursorPosition(hSrceen, coord);
49
- ::WriteConsole(hSrceen, str, static_cast<DWORD>(MAX_WIDTH * MAX_HEIGHT), &wbyte, NULL);
50
+ //WriteConsole(hSrceen, str, static_cast<DWORD>(MAX_WIDTH * MAX_HEIGHT), &wbyte, NULL);
51
+ FlushConsoleInputBuffer(hSrceen);
50
52
 
51
-
52
53
  }
53
54
 
54
55