【C++】ウィンドウサイズ変更する5つの方法
目次
- WinAPIを使用したウィンドウサイズ変更
- SDLを使用したウィンドウサイズ変更
- OpenGL(GLFW)を使用したウィンドウサイズ変更
- Qtを使用したウィンドウサイズ変更
- コンソールウィンドウのサイズ変更
- まとめ
WinAPIを使用したウィンドウサイズ変更
Windows API(WinAPI)を使用すると、ネイティブのWindowsアプリケーションでウィンドウサイズを変更できます。
ウィンドウサイズの変更には SetWindowPos
や MoveWindow
関数を使用します。
SetWindowPos を使用したウィンドウサイズ変更
#include <windows.h>
int main() {
HWND hwnd = FindWindow(NULL, L"ウィンドウのタイトル"); // ウィンドウのタイトルで取得
if (hwnd) {
SetWindowPos(hwnd, NULL, 100, 100, 800, 600, SWP_NOZORDER | SWP_SHOWWINDOW);
}
return 0;
}
このコードでは、ウィンドウの位置とサイズを (100,100) の座標に移動し、サイズを 800×600 に変更します。
MoveWindow を使用したウィンドウサイズ変更
#include <windows.h>
int main() {
HWND hwnd = FindWindow(NULL, L"ウィンドウのタイトル");
if (hwnd) {
MoveWindow(hwnd, 100, 100, 800, 600, TRUE);
}
return 0;
}
MoveWindow
は SetWindowPos
と似ていますが、ウィンドウを再描画するオプションがついています。
SDLを使用したウィンドウサイズ変更
SDL(Simple DirectMedia Layer)を使用すると、マルチプラットフォームでウィンドウを作成し、サイズを変更できます。
SDLでのウィンドウサイズ変更
#include <SDL2/SDL.h>
int main() {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("SDL Window",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
640, 480, SDL_WINDOW_RESIZABLE);
SDL_Delay(2000); // 2秒待機
SDL_SetWindowSize(window, 800, 600);
SDL_Delay(2000); // 2秒待機
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
このコードでは最初に 640×480 のウィンドウを作成し、2秒後に 800×600 に変更します。
OpenGL(GLFW)を使用したウィンドウサイズ変更
OpenGL でウィンドウを作成する際は、GLFW を使用すると簡単にサイズ変更が可能です。
GLFWでのウィンドウサイズ変更
#include <GLFW/glfw3.h>
int main() {
if (!glfwInit()) return -1;
GLFWwindow* window = glfwCreateWindow(640, 480, "GLFW Window", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
// ウィンドウサイズを変更
glfwSetWindowSize(window, 800, 600);
while (!glfwWindowShouldClose(window)) {
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
GLFW では glfwSetWindowSize
を使用してウィンドウのサイズを変更できます。
Qtを使用したウィンドウサイズ変更
Qt では GUI アプリケーションのウィンドウサイズを簡単に変更できます。
Qtでのウィンドウサイズ変更
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle("Qt Window");
window.resize(640, 480);
window.show();
// 3秒後にサイズ変更
QTimer::singleShot(3000, [&]() { window.resize(800, 600); });
return app.exec();
}
Qt では resize
を使ってウィンドウサイズを変更できます。
コンソールウィンドウのサイズ変更
C++ ではコンソールウィンドウのサイズも変更できます。
コンソールウィンドウのサイズ変更
#include <windows.h>
int main() {
HWND console = GetConsoleWindow();
MoveWindow(console, 100, 100, 800, 600, TRUE);
return 0;
}
このコードでは、コンソールウィンドウのサイズを変更しています。
まとめ
- WinAPI では
SetWindowPos
やMoveWindow
を使用 - SDL では
SDL_SetWindowSize
を使用 - OpenGL(GLFW)では
glfwSetWindowSize
を使用 - Qt では
resize
を使用 - コンソールウィンドウのサイズも変更可能
これらの方法を活用すれば、目的に応じてウィンドウのサイズを自由に変更できます。