ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:supertrap VC++ リンクエラーについて
困り度:
  • 困っています
こんにちわ。
VC++初心者です。
宜しくお願い致します。
環境は、XP HomeEditionSP2 CV++6.0 です。

VCの基本を理解する為及びプログラミングの勉強の為、簡単な表示ソフトを自作し、ビルトした後実行したら、表示されるはずのウインドウが表示されませんでした。
ソースコード修正後、再度ビルドをかけたら、上記LNK1168が発生しました。
WEBから色々情報をとってみると、
”ターゲットが実行中であり終了できていないので、ターゲットを実行中止にした後にあらためてビルドすればよい”とありました。

ウインドウが表示されていれば、右上の×マークを押すことでとりあえずは終了(実行中止)出来ますが、今回私が作成したバグ入りソフトの様に、ウインドウが表示しない状態でターゲットの実行中止をするにはどうすれば良いでしょうか?
VC++には、実行中止、というメニューは無いような気がするのですが。
ワークスペースを閉じたり、VC++を終了させたりしてみたのですが駄目でした。
今後VCを使用するにあたり、是非ともこの問題を明確にしたく、質問させて頂きました。

初歩的な質問で誠に恐縮ですが、どなたかお教えください。
宜しくお願い致します。
質問投稿日時:08/05/02 12:32
質問番号:3992018
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:redfox63 IDEからデバッグモードで実行中であればIDEのタイトルバーに[実行]と表示されていると思います

Ctrl+F5のデバッグ無しで実行を選択してしまったのなら
メニューのビルド > デバッグの開始 > プロセスへのアタッチで
起動したEXEファイル名を選択して OK

メニュのなかに『デバッグ』が存在します
この中に『デバッグの中止(D) shift+F5』が上から3番目にあると思いますよ

CreateWindowで作成して 有効はハンドルが作成されたら
ShowWindowを実行する
といった手順の方が安全だと思います

ついでに UpdateWindowを実行して画面の更新を促しましょう
種類:回答
どんな人:専門家
自信:自信あり
回答日時:08/05/02 22:20
回答番号:No.2
この回答への補足回答有難う御座います。
宜しければもう少しお教え下さい。

デバック無しで実行:
メニューのビルド>デバッグの開始>プロセスへのアタッチ
をやってみましたが、ファイルが何も出現せず、従って何も選択出来ませんでした。設定か何かがおかしいのでしょうか?

デバックモード:
丁寧に説明して頂いたお陰で、出来ました!!
有難う御座いました。
ただ、
(1)ビルド>デバックの開始>実行
(2)ビルド>実行
と、何故実行が二つ存在するのかが気になっています。
ブレークポイントなどを何も設定せずに(1)を行った場合、
(1)と(2)は何か違いが出てくるのでしょうか?

UpdateWindow:
WM_PAINTメッセージ(つまり画面の更新、再描画があった場合)をエンキューするのはOS(自分の場合はWindowsXP)だと自分は今まで思っていたのですが、UpdateWindowをソースファイルに既述しないとWM_PAINTメッセージがエンキューされないということでしょうか?
それとも、OSもWM_PAINTメッセージをエンキューするが、念の為UpdateWindow側でもWM_PAINTメッセージをエンキューさせた方が良い、
という意味でしょうか?初歩的な質問ですみません。

申し訳有りませんが、もしお分かりになる様でしたらお教え下さい。
宜しくお願い致します。
この回答へのお礼質問者です。

お礼が遅くなりました。

今後今回の様なミスをしない様、
1)最初に動作確認する際は、実行はビルト>デバッグ から行う。
2)外部キー(例えばESC)で、強制的に終了出来る仕掛けを作っておく
という風にしたいと思います。

ご回答いただいた皆様、どうもありがとう御座いました。
助かりました。

これで、今回の質問を締め切らせて頂きたいと思います。

回答

 

回答者:noname#60636 VC6の動作をあまり覚えてませんが、
VCから起動した場合、[デバッグの停止]のようなメニューで終了できた気が。
上記でダメ、または、VCから起動していない場合、タスクマネージャから終了させるとか。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/05/02 12:43
回答番号:No.1
この回答への補足回答有難う御座います。

もう少し付け加えさせて頂きたく思います。

デバッグの停止について:
自分は、VC上でコンパイル、ビルド、実行の順で行いました(作成したプログラム単独では起動させてはおりません)。組み込み系(ワンチップマイコンなど)の統合開発環境では、よく”デバックの中止”というメニューを見かけますが、それに該当するものがVC6には(自分が見た限り)なさそうなのです。
結局、PCの電源を入れ直さない限りターゲットは実行終了しない様です。

タスクマネージャでの終了について:
ターゲットを終了出来ない状態でタスクマネージャから終了させると、VC++自体が終了してしまいますが、ターゲットの実行を停止出来ない様です(再びVCを立ち上げても、再度ビルドすると同じエラーが出るので)。

明確にしたい事項:
自分は、以下3つの内のどれかかなあと思っています。
1)VC++6の??のメニューを選ぶと、実行中のターゲットが停止する
2)キーボードもしくはマウスから、??を入力すると実行中のターゲットが停止する
3)実行中止の機能は、VC++6には無い(ウインドウを終了出来ない様なターゲットを作成した場合は想定していない)

具体的なプログラムミスの内容:
自分がミスした内容は非常に幼稚です。
ウインドウを作成する際、ウインドウクラスの初期化→登録→作成とプログラムを組むと思いますが、更にウインドウの表示(CreateWindowでWS_VISIBLEを登録するかShowWindow)が必要であるということを知らなかった為、プログラム自体は動くが、ウインドウが表示されない為終了出来ない、というものでした(と私は思っています)。WS_VISIBLEを設定したら、ウインドウが表示され、終了出来ました。

長々と書いて申し訳在りませんでしたが、もしお分かりになるようでしたら教えて下さい。
宜しくお願い致します。
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示良回答のみ表示