トップページ > 過去ログ > 記事閲覧
画面を表示しないアプリケーションをつくりたいんですが
名前:VIP 日時: 2006/11/28 22:41

”画面を別のライブラリで絵画して、サウンドやジョイパッド関係をDXライブラリで処理をする” という感じのものを作りたいんですが、どうしてもDXライブラリを初期化するときにウィンドウができてしまいます どうにかしてウィンドウを作成しないような方法はないでしょうか?

Page: 1 |

Re: 画面を表示しないアプリケーションをつくりたいんですが ( No.1 )
名前:けいし 日時:2006/11/29 12:24

SetWindowVisibleFlag(FALSE); これを使うとできるかもしれません。 ウインドウは作成されますが、表示されなくなるようです。 僕は使ったことがありませんが……。
Re: 画面を表示しないアプリケーションをつくりたいんですが ( No.2 )
名前:管理人 日時:2006/11/29 13:36

 VIPさん始めまして、DXライブラリの管理人です。 > どうにかしてウィンドウを作成しないような方法はないでしょうか?  方法が無かったので機能を追加しました。 宜しければこちらのバージョンをダウンロードしてください。m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のファイルに上書きして、BCCをお使いの場合は『再構築』、 VCをお使いの場合は『リビルド』をして下さい)  こちらのバージョンで、DxLib_Init を呼ぶ前に VIPさんの側で作成 したウインドウのハンドルを SetUserWindow という関数に渡し、さらに SetNotWinFlag という関数に TRUE を渡すとDXライブラリでは ウインドウの作成がされなくなり、音関連の機能と入力関連(文字入力は 対応していませんが)の機能だけ使える状態になります。 例: HWND hWnd; 〜〜〜 hWnd に CreateWindow 等で作成したウインドウハンドルを代入 〜〜〜 SetUserWindow( hWnd ); // 作成したウインドウハンドルをセット SetNotWinFlag( TRUE ); // ウインドウ関連の処理を行わない if( DxLib_Init() < 0 ) return 0; // 初期化  因みにウインドウ関連の処理は全く行わないので、ウインドウの メッセージ処理は VIPさん側のプログラムで行って頂く事になります。 サンプル:  猫でもわかるプログラミング様で公開されているウインドウを作成するサンプルプログラムに DXライブラリを使って Test.wav の再生や入力キーの表示をしたりするようなプログラムを 書き加えました // sample01.cpp #include <windows.h> #include "DxLib.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); char szClassNme[] = "ウィンドウクラス・ネーム"; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow) { int handle; HDC hdc; char str[256]; // ウインドウの作成 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); // 作成したウインドウをセット SetUserWindow( hWnd ); // ウインドウ関連の処理はDXライブラリでは一切行わない SetNotWinFlag( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // Test.wav の読み込み handle = LoadSoundMem( "Test.wav" ); // Test.wav の再生 PlaySoundMem( handle, DX_PLAYTYPE_LOOP ); // メッセージループ while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); // メッセージが来た時にジョイパッド1のボタンの押下状態を描画する hdc = GetDC( hWnd ); sprintf( str, "%x", GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ); TextOut( hdc, 0, 0, str, lstrlen( str ) ); ReleaseDC( hWnd, hdc ); } // DXライブラリの後始末 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(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); } 不明な点等ございましたらご質問下さい。m(_ _)m
Re: 画面を表示しないアプリケーションをつくりたいんですが ( No.3 )
名前:VIP 日時:2006/11/29 18:12

うまく動作しました ありがとうございます

Page: 1 |