トップページ > 過去ログ > 記事閲覧
プログラムで生成したウィンドウ上で…
名前:もんちき 日時: 2010/01/17 00:29

 初めまして。  Dxlibとプログラムの勉強のために、色々やっているのですが、良く分からなく なってしまいました。どなたか、お助け下さい。  やってみたいのは、windowsのプログラムで生成したウィンドウ上でのDxlibの 利用です。試しに以下の様なプログラムを作ってみました。期待する結果としては、 640×480のウインドウが生成され、その上でDxlibのサンプルプログラムが動く… という状態だったのですが、サンプルプログラムの通常の動きと変わりませんでした。  どこが間違っているのでしょうか…? #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { HWND hWnd; char szClassNme[] = "test"; hWnd = CreateWindow(szClassNme, "", WS_POPUP, 0, 0, 640, 480, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, nCmdShow); SetUserWindow(hWnd); UpdateWindow(hWnd); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } DrawPixel( 320 , 240 , 0xffff ) ; // 点を打つ WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Page: 1 |

Re: プログラムで生成したウィンドウ上で… ( No.1 )
名前:いっち 日時:2010/01/17 01:37

以前、管理人さんの作ったサンプルをもとに作ってみました。 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=299 とりあえず、動いているようですが、まったく自信ないので 間違っているところがあればフォローしていただけると助かります。 WindowsプログラムとDxLibの共用は比較的難易度が高いと思うので 勉強と言うのであれば、まずはどちらかに絞ったほうが良いかと思います。 #include "DxLib.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); char szClassNme[] = "ウィンドウクラス・ネーム"; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { // ウインドウの作成 HWND hWnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style =CS_HREDRAW | CS_VREDRAW; myProg.lpfnWndProc =WndProc; myProg.cbClsExtra =0; myProg.cbWndExtra =0; myProg.hInstance =hInstance; myProg.hIcon =NULL; myProg.hCursor =LoadCursor(NULL, IDC_ARROW); myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); myProg.lpszMenuName =NULL; myProg.lpszClassName =szClassNme; if (!RegisterClass(&myProg)) return FALSE; } hWnd = CreateWindow(szClassNme, "猫でもわかるプログラミング", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); ShowWindow( hWnd, nCmdShow ); UpdateWindow( hWnd ); // 作成したウインドウをセット ChangeWindowMode( TRUE ); SetUserWindow( hWnd ); SetHookWinProc( WndProc ); SetMouseDispFlag( TRUE ); if( DxLib_Init( ) < 0 ) return -1; DrawPixel( 320 , 240 , GetColor(255, 255, 255) ); WaitKey( ); DxLib_End( ); return (msg.wParam); } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; default: return 0; } return (0L); }
Re: プログラムで生成したウィンドウ上で… ( No.2 )
名前:もんちき 日時:2010/01/17 02:28

 いっちさん、ご教授ありがとうございます。  そうか…windowsのウインドウ生成も間違っていたし、しかもDxlib側でのメッセージ処理も 抜けていて、WindowsプログラムもDxLibの操作も、どちらも不十分だったのですね。  良く分からずやり始めたのですが、知らずに難易度の高めな事をやろうとしていたのですね。 いっちさんの下さったアドバイスの通り、それぞれ別々に勉強しながら、攻略したいと思います。  ありがとうございました。

Page: 1 |