提示コードの////コメント部の中だと思われますが提示画像のようにウインドウは表示されますが上のタブを掴んでも動かせずまた画面領域にカーソルを入れると処理待ちになってしまいますまた×印で終了もできません。しかしコンソール画面を閉じると終了されます。これはどうしたらいいのでしょうか?
#include "io.h" #include "Fcntl.h" #include "stdio.h" #include "Windows.h" #include "glew/include/GL/glew.h" #include "gl/GL.h" #include "Debug.hpp" #//include "Game.hpp" //ウインドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { //終了または閉じる時にプログラムを正常に終了する if( message && WM_DESTROY || message && WM_CLOSE) { PostQuitMessage(0);//正常終了 return 0; } return DefWindowProcW(hWnd,message,wParam,lParam);//意味がない場合 } int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) //int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow ) { Debug::CreateConsoleWindow(); HWND hWnd;//ウインドウハンドル MSG msg = { 0 };//スレッドのメッセージキュー情報 WNDCLASS wc;//汎用ウインドウ HGLRC glRC; HDC dc; int _format; wc.style = CS_HREDRAW | CS_VREDRAW;//ウインドウのスタイル(ウインドウサイズを変更すると自動調整) wc.lpfnWndProc = WndProc;//ウインドウプロシージャを設定 wc.cbClsExtra = 0;//構造体の後ろに補足バイト数 wc.cbWndExtra = 0;//ウインドウインスタンスの後ろに補足バイト数 wc.hInstance = hInstance;//ウインドウプロシージャがあるインスタンスハンドル wc.hIcon = NULL;//アイコンのハンドル wc.hCursor = LoadCursor(NULL,IDC_ARROW);//マウスカーソルのハンドル wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//ウインドウ背景色 wc.lpszMenuName = NULL;//デフォルトのメニュー名 wc.lpszClassName = TEXT("line");//ウインドウクラスに付ける名前 if( !RegisterClass(&wc)) { return 1; } hWnd = nullptr; hWnd = CreateWindow(TEXT("STATIC"), TEXT("WinAPITest"),WS_OVERLAPPEDWINDOW | WS_VISIBLE, 500,500,500,500, NULL,NULL,hInstance,NULL); if(hWnd == NULL) { printf("NULL"); } //ピクセルフォーマットを指定 PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, 32, 0,0,0,0,0, 0, 0, 0, 0,0,0,0, 24, 8, 0, PFD_MAIN_PLANE, 0, 0,0,0 }; dc = GetDC(hWnd); _format = ChoosePixelFormat(dc,&pfd); if(_format == 0) { printf("%d\n",GetLastError());//Error } //OpenGLが使うデバイスコンテキストに指定のピクセルフォーマットを指定 if( !SetPixelFormat(dc,_format,&pfd) ) { printf("%d\n",GetLastError());//Error } //OpenGLコンテキストを作成 glRC = wglCreateContext(dc); if( !wglMakeCurrent(dc,glRC) ) { printf("%d\n",GetLastError());//Error } glewExperimental = TRUE; GLenum err = glewInit(); if(err != GLEW_OK) { printf("glew 初期化エラー\n"); } /////////////////////////////////////////////////////////////////////////////// while(true) { wglMakeCurrent(dc, glRC); glClearColor(0.0f, 0.5f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glRectf(-0.5f, -0.5f, 0.5f, 0.5f); glFlush(); SwapBuffers(dc); // wglMakeCurrent(NULL, NULL); UpdateWindow(hWnd); } ///////////////////////////////////////////////////////////////////////////// Debug::closeConsoleWindow(); return 0; } int main() { }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/02 09:04
2020/09/02 09:12
退会済みユーザー
2020/09/02 10:04 編集
2020/09/02 09:37
2020/09/02 10:19
2020/09/02 10:38