- Win32API質問箱 Build122
960 :デフォルトの名無しさん[]:2016/10/21(金) 17:44:09.25 ID:KvD6T+Uq - コンソールをリサイズした状態でのバッファ表示についての質問です。
COORD wh = {80, 50}; SMALL_RECT area = {0, 0, 79, 49}; SetConsoleScreenBufferSize(GetStdHandle(-11), wh); SetConsoleWindowInfo(GetStdHandle(-11), TRUE, &area); で 80x50 のコンソールになるのですが、その後 CHAR_INFO b[50 * 80]; COORD p = {0, 0}; b[(0-79と0-49で行と列を計算)].Char.AsciiChar = '適当'; b[(上と同じ)].Attributes = 適当; WriteConsoleOutputA(GetStdHandle(-11), b, wh, p, &area); を何度か繰り返すと、25行以内(0-79と0-24の範囲)だけに書き込んでいるときは表示が正常なのですが、 26行以上(0-79と25-49の範囲)書き換えると訳の分からない表示になります。 ()の中は (y*80+x) みたいな計算をしています。 ScrollConsoleScreenBuffer(GetStdHandle(-11), &area, NULL, p, b); を入れると多少表示は変化するのですが、期待する結果にはなりませんでした。 何か勘違いしているのかも知れませんが、解決のお手伝いください。
|