- ベストアンサー
VC++ リンクエラーについて
- VC++初心者のあなたが、自作の表示ソフトをビルドしようとした際に発生したLNK1168のエラーについて質問です。
- ウインドウが表示されずにターゲットの実行中止をする方法について教えてください。
- VC++の実行中止メニューが見つからず、ウインドウが表示されないバグ入りソフトの対処方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
IDEからデバッグモードで実行中であればIDEのタイトルバーに[実行]と表示されていると思います Ctrl+F5のデバッグ無しで実行を選択してしまったのなら メニューのビルド > デバッグの開始 > プロセスへのアタッチで 起動したEXEファイル名を選択して OK メニュのなかに『デバッグ』が存在します この中に『デバッグの中止(D) shift+F5』が上から3番目にあると思いますよ CreateWindowで作成して 有効はハンドルが作成されたら ShowWindowを実行する といった手順の方が安全だと思います ついでに UpdateWindowを実行して画面の更新を促しましょう
その他の回答 (1)
VC6の動作をあまり覚えてませんが、 VCから起動した場合、[デバッグの停止]のようなメニューで終了できた気が。 上記でダメ、または、VCから起動していない場合、タスクマネージャから終了させるとか。
補足
回答有難う御座います。 もう少し付け加えさせて頂きたく思います。 デバッグの停止について: 自分は、VC上でコンパイル、ビルド、実行の順で行いました(作成したプログラム単独では起動させてはおりません)。組み込み系(ワンチップマイコンなど)の統合開発環境では、よく”デバックの中止”というメニューを見かけますが、それに該当するものがVC6には(自分が見た限り)なさそうなのです。 結局、PCの電源を入れ直さない限りターゲットは実行終了しない様です。 タスクマネージャでの終了について: ターゲットを終了出来ない状態でタスクマネージャから終了させると、VC++自体が終了してしまいますが、ターゲットの実行を停止出来ない様です(再びVCを立ち上げても、再度ビルドすると同じエラーが出るので)。 明確にしたい事項: 自分は、以下3つの内のどれかかなあと思っています。 1)VC++6の??のメニューを選ぶと、実行中のターゲットが停止する 2)キーボードもしくはマウスから、??を入力すると実行中のターゲットが停止する 3)実行中止の機能は、VC++6には無い(ウインドウを終了出来ない様なターゲットを作成した場合は想定していない) 具体的なプログラムミスの内容: 自分がミスした内容は非常に幼稚です。 ウインドウを作成する際、ウインドウクラスの初期化→登録→作成とプログラムを組むと思いますが、更にウインドウの表示(CreateWindowでWS_VISIBLEを登録するかShowWindow)が必要であるということを知らなかった為、プログラム自体は動くが、ウインドウが表示されない為終了出来ない、というものでした(と私は思っています)。WS_VISIBLEを設定したら、ウインドウが表示され、終了出来ました。 長々と書いて申し訳在りませんでしたが、もしお分かりになるようでしたら教えて下さい。 宜しくお願い致します。
お礼
質問者です。 お礼が遅くなりました。 今後今回の様なミスをしない様、 1)最初に動作確認する際は、実行はビルト>デバッグ から行う。 2)外部キー(例えばESC)で、強制的に終了出来る仕掛けを作っておく という風にしたいと思います。 ご回答いただいた皆様、どうもありがとう御座いました。 助かりました。 これで、今回の質問を締め切らせて頂きたいと思います。
補足
回答有難う御座います。 宜しければもう少しお教え下さい。 デバック無しで実行: メニューのビルド>デバッグの開始>プロセスへのアタッチ をやってみましたが、ファイルが何も出現せず、従って何も選択出来ませんでした。設定か何かがおかしいのでしょうか? デバックモード: 丁寧に説明して頂いたお陰で、出来ました!! 有難う御座いました。 ただ、 (1)ビルド>デバックの開始>実行 (2)ビルド>実行 と、何故実行が二つ存在するのかが気になっています。 ブレークポイントなどを何も設定せずに(1)を行った場合、 (1)と(2)は何か違いが出てくるのでしょうか? UpdateWindow: WM_PAINTメッセージ(つまり画面の更新、再描画があった場合)をエンキューするのはOS(自分の場合はWindowsXP)だと自分は今まで思っていたのですが、UpdateWindowをソースファイルに既述しないとWM_PAINTメッセージがエンキューされないということでしょうか? それとも、OSもWM_PAINTメッセージをエンキューするが、念の為UpdateWindow側でもWM_PAINTメッセージをエンキューさせた方が良い、 という意味でしょうか?初歩的な質問ですみません。 申し訳有りませんが、もしお分かりになる様でしたらお教え下さい。 宜しくお願い致します。