実現したいこと
freeglutにて作成したウィンドウを非表示にしたい。
発生している問題・分からないこと
freeglutを使用したウィンドを隠したい(非表示)のですが、ウィンドウが隠れてくれません。
前バージョン(2.8.1)ではglutCreateWindowでウィンドウを作成した後にglutHideWindow()を実行することで、ウィンドウを隠すことができました。
しかし、バージョンアップ(3.4.1)にしたところ、glutHideWindow()では、ウィンドウを隠す(非表示)にすることができなくなってしまいました。
該当のソースコード
C++
1#include "stdafx.h" 2#include <iostream> 3#include <GL/freeglut.h> 4#include <GL/glut.h> 5 6void display(void) 7{ 8 glClear(GL_COLOR_BUFFER_BIT); 9} 10 11int main(int argc, char *argv[]) 12{ 13 glutInit(&argc, argv); 14 glutCreateWindow("title"); 15 glutDisplayFunc(display); 16 // これでウィンドウが隠れると思ったが、効果なし。 17 //glutHideWindow(); 18 19 // === ここからは代替手段 === 20 // GLのデバイスコンテキストハンドル取得 21 HDC glDc = wglGetCurrentDC(); 22 // ウィンドウハンドル取得 23 HWND hWnd = WindowFromDC(glDc); 24 // ウィンドを非表示にする 25 ShowWindow(hWnd, SW_HIDE); 26 // === ここまで === 27 28 glutExit(); 29 30 return 0; 31} 32 33
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
代替手段として、作成したウィンドウのハンドルを取得し、
C++標準のShowWindow関数を使用することで非表示にしました。
上記ソースコードにも記載しましたが、この部分となります。
この方法でも問題なければ、構わないのですが、glutCreateWindowで画面表示まで行っていると
思います。(認識間違っていたらすいません。)
そのため、ShowWindowを使用して非表示するというのが、なんか気持ち悪いです。
C++
1// GLのデバイスコンテキストハンドル取得 2HDC glDc = wglGetCurrentDC(); 3// ウィンドウハンドル取得 4HWND hWnd = WindowFromDC(glDc); 5// ウィンドを非表示にする 6ShowWindow(hWnd, SW_HIDE);
補足
freeglut : 3.4.1
GPU : NVIDIA Quadro P400(OpenGL 4.6対応)
OS : Windows10
IDE : Visual Studio 2022
回答1件
あなたの回答
tips
プレビュー