トップページ > 過去ログ > 記事閲覧
Debugファイルからの実行がうまくいかない
名前:s707 日時: 2011/10/31 16:58

vc++2010を使ってF5でデバックを開始する時は問題ないのですが、Debugファイルから直接exeファイルをダブルクリックすると、うまく表示されません。 具体的には左クリックをしないと画面が表示されなかったり、左クリックをした位置に実行画面が表示されます。 exeファイルを実行する時に右クリックして開くを選択すると問題ないのですが、何が原因でしょうか if(GetMouseInput() & MOUSE_INPUT_LEFT) { SendMessage(GetMainWindowHandle(), WM_NCLBUTTONDOWN, HTCAPTION, 0);//ウインドウを移動させる為、ウインドウ枠をクリックしたと思わせる } この部分を消すと問題無いのですが、ウィンドウは動かしたいので。 ご助力の程、よろしくお願い致します。 //main.cpp #include "DxLib.h" #include "dayData.h" #include "draw_clock.h" void jihou(struct dayData* day); void plan(struct dayData* day); void option(struct dayData* day); void option_draw(struct dayData* day); void Time(struct dayData* day); void date(struct dayData* day); void load_day(int,struct dayData* day); void save_day(int,struct dayData* day); void draw_clock(); int title(int); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ struct dayData day[100]; // マウス状態管理用変数 int nClickNow = 0 , nClickPrev = 0; int nClickNow_R = 0 , nClickPrev_R = 0; int nClickR_Count = 0; int status = 0,temp = 0; bool title_flg = false; SetMainWindowText("clock"); ChangeWindowMode( TRUE ); // ウインドウの透過色モードON SetUseBackBufferTransColorFlag( TRUE ) ; SetDrawScreen(DX_SCREEN_BACK); SetWindowStyleMode(2); SetWindowPosition(480, 240 ) ; SetAlwaysRunFlag( TRUE ) ; if ( DxLib_Init( ) == -1 ) return -1; Load(); load_day(status,day);//日にちを読み込む plan(day);//予定を音声再生する while (ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){ if(GetMouseInput() & MOUSE_INPUT_LEFT) { SendMessage(GetMainWindowHandle(), WM_NCLBUTTONDOWN, HTCAPTION, 0);//ウインドウを移動させる為、ウインドウ枠をクリックしたと思わせる } jihou(day); draw_clock(); // マウス状態の更新 nClickNow = (GetMouseInput() & MOUSE_INPUT_LEFT); nClickNow_R = (GetMouseInput() & MOUSE_INPUT_RIGHT); if( nClickNow_R )nClickR_Count++;//右クリックを押しているときはカウントアップ else{nClickR_Count = 0;}//それ以外ではカウントを0にする if (!status && nClickR_Count == 1){ break; } if ( nClickNow_R && !nClickPrev_R){ status = 0; title_flg = false; temp = 0; } if(title_flg)temp = title(status); if( nClickNow && !nClickPrev){ if(status == 0){ title_flg = true; status = 4; } else if(temp == 1){ Time(day); } else if(temp == 2 ){ date(day); } else if(status == 3){ option(day); save_day(status,day);//日にちを書き込む load_day(status,day);//変更された日にちを読み込む } if(temp)status = temp; } if(status == 3){ option_draw(day); } // 今回のクリック状態を保持する nClickPrev = nClickNow; nClickPrev_R = nClickNow_R; } DxLib_End(); return 0; }

Page: 1 |

Re: Debugファイルからの実行がうまくいかない ( No.1 )
名前:いっち 日時:2011/11/01 19:36

よく分かりませんが、以下のような感じ変えてみたらどうなりますか? > while (ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){ > if(GetMouseInput() & MOUSE_INPUT_LEFT) { > SendMessage(GetMainWindowHandle(), WM_NCLBUTTONDOWN, HTCAPTION, 0);//ウインドウを移動させる為、ウインドウ枠をクリックしたと思わせる > } ↓↓↓↓ 変更 ↓↓↓↓ > int NewMouse = 0, OldMouse = GetMouseInput( ); > while (ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0){ > if((NewMouse = GetMouseInput()) != OldMouse && NewMouse & MOUSE_INPUT_LEFT) { > SendMessage(GetMainWindowHandle(), WM_NCLBUTTONDOWN, HTCAPTION, 0);//ウインドウを移動させる為、ウインドウ枠をクリックしたと思わせる > } > OldMouse = NewMouse;
Re: Debugファイルからの実行がうまくいかない ( No.2 )
名前:s707 日時:2011/11/04 00:59

いっち様、ご返信ありがとうございます。 変更してみた所、1回分余計にクリックされた状態で起動する事が多いです。
Re: Debugファイルからの実行がうまくいかない ( No.3 )
名前:いっち 日時:2011/11/05 21:47

OS等ご使用の環境を教えてください。
Re: Debugファイルからの実行がうまくいかない ( No.4 )
名前:s707 日時:2011/11/07 17:52

開発環境は windows vista vc++ 2010 express DXライブラリ です。
Re: Debugファイルからの実行がうまくいかない ( No.5 )
名前:いっち 日時:2011/11/07 19:10

DxLib_Init の前で SetUseDirectInputFlag を TRUE に設定した場合どのようになるでしょうか?
Re: Debugファイルからの実行がうまくいかない ( No.6 )
名前:s707 日時:2011/11/07 20:29

前で記述した所、マウスの左クリックが 効かなくなりました。 前を消して 後ろで記述しても同様でした。
Re: Debugファイルからの実行がうまくいかない ( No.7 )
名前:いっち 日時:2011/11/10 21:59

私の環境では事象が発生せず、原因の心当たりもありません。 他の方の回答をお待ち下さい。お役に立てずすみません。
Re: Debugファイルからの実行がうまくいかない ( No.8 )
名前:s707 日時:2011/11/11 13:33

いっち様、返信して頂いた事自体がありがたいです。他の作業と平行して解決を目指します。
Re: Debugファイルからの実行がうまくいかない ( No.9 )
名前:管理人 日時:2011/11/20 15:11

こちら if(GetMouseInput() & MOUSE_INPUT_LEFT) { SendMessage(GetMainWindowHandle(), WM_NCLBUTTONDOWN, HTCAPTION, 0);//ウインドウを移動させる為、ウインドウ枠をクリックしたと思わせる } を用いてウインドウを動かせるようにするプログラムを私も組んでみましたが、 Vista環境で Debugフォルダから直接 exeファイルを実行しても正常に動作しました s707さんのプログラムを直接実行することができれば何かわかるかもしれませんが、 掲示板に載せていただいたプログラムを拝見する限りでは、SetDrawScreen(DX_SCREEN_BACK) ; が DxLib_Init の前にあるのが少し気になります ( SetDrawScreen は DxLib_Init の前に実行しても効果が無いので ) 関係がある可能性は低いですが、よろしければ DxLib_Init の後で SetDrawScreen(DX_SCREEN_BACK) ; を実行するようにして試してみていただけないでしょうか?
Re: Debugファイルからの実行がうまくいかない ( No.10 )
名前:s707 日時:2011/11/24 11:47

管理人様、ご返信ありがとうございます。 ご提案通り試した後も色々やってみましたが駄目でした。 ファイルをアップロードします。 ttp://firestorage.jp/download/38ec70bc787679527a52ec5fcc6b247878e8f740 パスワードはDeskTopです。 何卒よろしくお願い致します。
Re: Debugファイルからの実行がうまくいかない ( No.11 )
名前:s707 日時:2011/11/24 11:49

アドレスのhは省略しています。
Re: Debugファイルからの実行がうまくいかない ( No.12 )
名前:管理人 日時:2011/11/27 21:26

アップしていただいたプログラムを Debug フォルダから実行してみました 結果ですが、手元にある WindowsXP,WindowsVista,Windows7 64bit では正常に動作しました うーん謎です・・・ 漠然とした推測ですが、s707さんのデスクトップ画面の設定や常駐ソフトなどが関係しているかもしれません
Re: Debugファイルからの実行がうまくいかない ( No.13 )
名前:s707(解決) 日時:2011/11/28 17:57

管理人様、ご返信ありがとうございます。 自分のパソコンだけで起きる現象の様なので 解決と致します。 いっち様もありがとうございました。

Page: 1 |