はじめまして、たっくです。
はじめて書き込みさせていただきます、いたらぬ点はお許しください。
開発環境はVC++6.0でダイヤログベースのアプリケーションです。
概要は解析ソフトなんですが、解析部分はフォートランで完成いていましたので
それをVC++に組み込んで計算をまわしています。
ダイヤログ自体はファイルのディレクトリとファイル名の取得だけで、
あるボタンを押すとディレクトリとファイル名をフォートランに渡して
計算を実行し、結果ファイルを作成します。
ここで、データをフォートランに渡して計算(約1分程度)しているとき
ダイヤログが固まってしまいます。(計算が終了すると復活します)
この現象を解決したいのですがどのようにすれば良いかわかりません。
アドバイスお願いします。(VC++は始めて6ヶ月ぐらいのほとんど初心者です。)
void CADlg::OnButton()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
//フォートラン実行
char cdir[256], cdat[256];
int i,ircode;
CString temp=m_DirPath+'\0';
int len_cdir=temp.GetLength();
for (i=0;i<len_cdir;i++) cdir[i]=temp[i];
temp=m_FileName2+'\0';
int len_cdat=temp.GetLength();
for (i=0;i<len_cdat;i++) cdat[i]=temp[i];
JNFEM2A(cdir,len_cdir,cdat,len_cdat,&len_cdir,&len_cdat,
gl_ww,&gl_lenww,&m_StepNum2,&m_StepNum,&ircode);
//ここまで
}
OnButton()関数の中で直接重い処理をすると、終了するまで他のメッセージを処理してくれま
せん。
こういう場合は、スレッドを使うのが常道です。
スレッドについて勉強してみてください。
この掲示板の 「AfxBeginThreadの使い方」という質問の回答が役に立つと思います。
早速ありがとうございます!!
「AfxBeginThreadの使い方」を勉強してみます。
解決したらご報告します。
スレッドをつかって解決できました、ありがとうございます!!