提示コードの///部ですがこのどうすればプログラムでコンソール画面のウインドウサイスを変更できるのでしょうか?どうやっても変更されません。SetWindowPos関数で変更するはずなのですが画面サイズが変更されません。これは一体どうすればいいのでしょうか?
GetLastErro関数でエラーコードを調べましたが87 [パラメータが間違えています]と表示されます。
公式リファレンス: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowpos
cpp
1// コンストラクタ 2ScreenBuffer::ScreenBuffer() 3{ 4 mText = new Debug_Log("ScreenBuffer.txt"); 5 6 7 //描画開始座標 8 mDraw_start.X = 0; 9 mDraw_start.Y = 0; 10 11 //描画範囲 12 mDraw_size.X = MAX_WIDTH; 13 mDraw_size.Y = MAX_HEIGHT; 14 15 //ウインドウサイズ 16 mRect.Left = (SHORT)0; 17 mRect.Top = (SHORT)0; 18 mRect.Right = (SHORT)MAX_WIDTH; 19 mRect.Bottom = (SHORT)MAX_HEIGHT; 20 21 // バッファーを作成 22 mHandle = CreateConsoleScreenBuffer(GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); 23 24 SetConsoleActiveScreenBuffer(mHandle); //有効にする 25 26 if (mHandle == INVALID_HANDLE_VALUE) 27 { 28 29 } 30 31 // 画面バッファサイス変更 32 if (SetConsoleScreenBufferSize(mHandle, mDraw_size) == 0) 33 { 34 35 } 36 37 // 画面サイズ変更 38 if (SetConsoleWindowInfo(mHandle, TRUE, &mRect) != 0) 39 { 40 41 } 42 43///////////////////////////////////////////////////////////////////////////////////////// 44 HWND h = 0; 45 SetWindowPos(h, HWND_TOPMOST, 0, 0, 100,100, SWP_DRAWFRAME); 46 //SetWindowPos(h, HWND_TOPMOST,0,0,MAX_WIDTH,MAX_HEIGHT,SWP_DRAWFRAME); 47///////////////////////////////////////////////////////////////////////////////////////// 48 49} 50
hpp
1 2// ウインドウサイズ 3#define MAX_WIDTH ((int)16 * 10) 4#define MAX_HEIGHT ((int)9 * 10) 5 6/*################################################ 7* 文字を描画するクラス 8################################################*/ 9 10class ScreenBuffer 11{ 12public: 13 14 ScreenBuffer(); //コンストラクタ 15 ~ScreenBuffer(); //デストラクタ 16 17 void GenerateOutput(); //描画する 18 19 void Draw(int H, int W, const char* format, ...); //バッファーに書き込み 20 void DrawLoop(int H, int W,int speed, const char* format, ...); //バッファーに書き込み 足しなくった文字はループする 21 void CursorPosition(int x,int y); //カールの座標を設定 22 void DrawAA(int H, int W, const char* format, ...); //アスキーアート一文字を書く 23 24 25 26 27 HANDLE getHandle(); 28 29private: 30 31 32 CHAR_INFO mScreenBuffer[MAX_HEIGHT][MAX_WIDTH]; //画面バッファ 33 HANDLE mHandle; //ハンドル 34 35 COORD mDraw_start; //描画開始位置 36 COORD mDraw_size; //画面のサイズ 37 _SMALL_RECT mRect; //画面の描画範囲 38 39 /* 格納できる文字数をカウント */ 40 int mNowBuffer_width[MAX_HEIGHT]; //横 41 int mNowBuffer_height = 0; //縦 42 43 Debug_Log *mText; //デバッグ用テキスト出力 44 45 46 47 48}; 49#endif;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/12/23 07:54
2020/12/23 07:58
2020/12/23 08:10 編集
退会済みユーザー
2020/12/23 08:10
2020/12/23 08:17
2020/12/23 08:22
2020/12/23 08:30
2020/12/23 08:48 編集
退会済みユーザー
2020/12/24 00:09
2020/12/24 00:21
退会済みユーザー
2020/12/24 00:27
2020/12/24 00:58 編集
2020/12/24 01:00 編集
退会済みユーザー
2020/12/24 01:05
2020/12/24 01:07
退会済みユーザー
2020/12/24 01:09
2020/12/24 01:23 編集
退会済みユーザー
2020/12/24 01:42 編集
2020/12/24 01:54
2020/12/24 03:26 編集
2020/12/24 04:01 編集
2020/12/24 04:11 編集
退会済みユーザー
2020/12/24 05:10