いつもお世話になっております
Win98SE VC++6.0 MFC SDI formview ベースのアプリケーションを作っているのですが、
アプリケーションのアイコンに開くファイルをドラックしたら以下のエラーのダイアログがでて、コマンドライン引数が受けられないばかりかアプリケーションが止まってしまいます。
------------------------------------------
Microsoft Visual C++ Runtime Library
Runtime Error!
Program : "実行ファイルの名前"

abnormal program termination
-------------------------------------

どこをいじってそうなってしまったのかわからないので困っています。
心当たりのあるかたアドバイスお願いいたします。
普通に起動して、開くコマンドでファイルを開くのは大丈夫です。

A 回答 (1件)

単純にアプリケーションにドラッグ&ドロップの処理をさせていないだけなのではないでしょうか?きちんとドラッグ&ドロップを処理するコードを追加したのでしょうか?


#それがないと似たようなエラーがでたと記憶しています。

ではでは☆
    • good
    • 0
この回答へのお礼

すいません直りました。
ファイル(F)開く(O)のメッセージ関数をオーバーライドして作り直したら再現しなくなりました。
でもどうしてか良くわかりません。

ウィザードで出来るスケルトンのアプリケーションは最初から開けるんです(エラーも出ない)。
ところがいろいろいじってるうちにそれが出来なくなっちゃったんで(汗)

お騒がせ致しました。

お礼日時:2001/12/14 14:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVC++.net SDIで追加したメニューを灰色から黒にする方法

VC++.net 2003 のSDIでプログラムを作っています。
新たにメニューを追加したのですが、実行しても文字が灰色になっており、選択することができません。

手元にある入門書には、フォームアプリケーションの場合は、新たに追加した「メニューをダブルクリックすると、コードエディタに切り替わり、Clickメソッドの枠組みが自動的に生成される」とあるのですが、私の場合、ダブルクリックしても何も起こりません。ネットで検索すると、VC++ ver.6 の情報ばかりで、VC++.net 2003の場合が、いまいちよくわかりません。

「この本に書いてある」という情報でも構わないのでよろしくお願いします。

Aベストアンサー

確信があるわけではありませんが・・・

アプリケーションを実行してメニューを
ダブルクリックしていませんか?
その場合、何も起こらなくて正解です(^^

きっとお手元の入門書にはリソースエディタの
メニューをダブルクリックすると・・・という
趣旨のことが書かれていると思います。

というわけでリソースエディタでメニューを
表示して、それをダブルクリックしてみてください。

QVC++、MFCでSDIでアプリ作成中

現在、VC++、MFCでSDIでアプリ作成中です。
アイコン上にファイル(txtファイル)をドラッグ&ドロップしてメモ帳を起動したいです。
ただ、ドロップされたファイルはうまく読み込めるのですが、そのファイルを開く(表示)することができません。

ドロップされたファイルは、C○○View.cppで

int C○○View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: この位置に固有の作成用コードを追加してください
CStringArrayargv;
if( IsDropOnIcon( &argv, TRUE ) ){
inti;
for( i = 0; i < argv.GetCount(); i++ ){
MessageBox( argv[ i ], "ドロップされたファイルは", MB_OK );
Read(argv[i]);
}
}
}

BOOL C○○View::IsDropOnIcon( CStringArray* argv, BOOL acceptFolder )
{
CStringcmdlin = "";
CStringresToken;
char*p;
intstartnum = 0;

p = AfxGetApp()->m_lpCmdLine;
if( strlen( p ) == 0 || p[ 0 ] == '-')
return FALSE;

cmdlin = p;

resToken= cmdlin.Tokenize( "\"", startnum );
while( resToken != "" ){
if( resToken != " " && IsExist( resToken, acceptFolder ) )
argv->Add( resToken );
resToken= cmdlin.Tokenize( "\"", startnum );
};
return TRUE;
}

/* 引数で貰った文字列がファイルかどうかをチェック */
BOOL C○○View::IsExist( CString filepath, BOOL acceptFolder)
{
CFilefp;

if( fp.Open( filepath, CFile::modeRead ) ){
fp.Close();
return TRUE;
}
return FALSE;
}

のargv[i]で取得しています。

これが、Read(arg[i])でうまく読み込めません。
ちなみにRead(CString filename)は正しく動くことは確認済みです。
Read(arg[i])を入れる場所がOnCreateがいけないとは思うのですが、どのタイミングで
読み込めばいいかがわかりません。
どなたか教えて頂けないでしょうか?

現在、VC++、MFCでSDIでアプリ作成中です。
アイコン上にファイル(txtファイル)をドラッグ&ドロップしてメモ帳を起動したいです。
ただ、ドロップされたファイルはうまく読み込めるのですが、そのファイルを開く(表示)することができません。

ドロップされたファイルは、C○○View.cppで

int C○○View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: この位置に固有の作成用コードを追加してください
CStringArrayargv;
if( IsDropOnI...続きを読む

Aベストアンサー

InitInstance SDI コマンドライン
でググってみてはいかがでしょうか

QVC++2003SDIでMFCアプリ作成中です。

MFCで自動生成された画面だと、ステータスバーのチェックのON、OFFの切り替えができるようですが、ステータスバーの内容が自動で上書きされます。
ファイルオープンに成功した場合のみ更新したい場合はどうすればよろしいのでしょうか?
どこでステータスバーを更新しているかも教えていただけると嬉しいです。

Aベストアンサー

更新したいところで、

CMainFrame* pMain = (CMainFrame*)AfxGetMainWnd();

pMain->SetStatusbarMessage(_T("メッセージ"));

のようにします。CMainFrameが未定義というエラーが出る場合は、

#include "MainFrm.h"

で解消できるはずです。

Q[VC++][MFC][SDI]ダイアログコントロールもしくわツールバー!!詰まってます!!

現在VC++6.0でMFCを使いSDIのプログラムを作っているのですが、フォームにダイアログバーを張っています。

これをツールバーのように自由に動かしたり、左右上下にドッキングさせたり。
これって実現可能でしょうか?

色々ためしてみたんですが無理でした。
やっぱ不可能ですかね?

これが無理なんであればデフォルトで作成されるツールバー([新規作成][開く][保存]等が入ってる)にコントロール(ボタンやリストボックス)を追加して使用、と考えているのですがこれも難しい!!!


まだまだ未熟者なのですがどうかご存知の方おられましたらご教授ください!!
よろしくお願いします!!

Aベストアンサー

Dannerです。
参考URL(英語)を載せておきます。

参考URL:http://www.codeguru.com/Cpp/controls/toolbar/placingcontrolsintoolbars/article.php/c2505/

Qvc++6.0にてdllとlibraryを作成する方法

vc++6.0にてdllとlibraryを作成する方法
を知りたいのですが、dllとlibraryを
それぞれ新規プロジェクトで立ち上げれば
作成できるのですが、dllを作成した際に
libraryも作成(自動)されるようなことは
できないのでしょうか?

Aベストアンサー

DLLをビルド(作成)すればLIBも同時に作成されますよ。
プロジェクトフォルダのRelease(又はDebug)配下に存在しているはずです。


人気Q&Aランキング

おすすめ情報