CreateWindowという関数を用いてウィンドウを作成するコードを書きました
C++
1#include <windows.h> 2 3void Window(int x, int y, int z, int w) 4{ 5 HINSTANCE *h = new HINSTANCE(); 6 HINSTANCE hInstance = *h; 7 HWND win = CreateWindow(TEXT("STATIC"), TEXT("Sample"), WS_ACTIVECAPTION, x, y, z, w, 8 NULL, NULL, hInstance, NULL); 9 10 if (win == NULL) 11 { 12 return; 13 } 14 15 ShowWindow(win, SW_SHOW); 16 MessageBox(NULL, TEXT("Succes"), TEXT("Result"), MB_ICONINFORMATION); 17} 18 19int main() 20{ 21 Window(500, 500, 500, 500); 22 return 0; 23}
このコードを3つのcppファイルにコピーして、TEXT内の文字列のみを変更しています
まず1つ目をMINGWの32ビット版でg++コマンドによりコンパイルしたところ、生成されたexeファイルは正常にWindowを表示しました
2つ目はVidualStudioにてビルド及びコンパイルを行い、こちらも正常にWindowの表示を完了しました
しかし3つ目のcppファイルでは上記のいずれの手段でもWindowの生成に失敗してしまいます
生成できるWindowが二つまでなのかと考え、一つ目のcppファイルを完全に削除した後に再度コンパイルを行っても結果は変わらず、Windowは表示されません
この3つ目のファイル内ではCreateWindowからNULLが返されているらしく、エラーメッセージも生成されないため原因が特定できません
GetLastErrorという関数を用いて内部のエラーコメントを取得できるという情報も確認し、その取得を試みたものの、こちらもメソッドが動作しないのかエラーを返しません
一方MessageBox関数は正常に動作し、if文内のreturn前にこの関数を宣言した場合には、Windowが生成されない場合でもメッセージを表示してくれます
現在は新規に作成したファイルでこのコードを記述しても、ウィンドウを表示しない状況です
どのような原因が考えられるでしょうか?
また、GetLastError関数の使用以外で、この内部的におそらく発生しているであろうエラーを特定する方法は存在するでしょうか?
回答2件