void CKodomo1Dlg::OnOK() { CString str_ed1; CString str_ed2; FILE *fp; m_ed1.GetWindowText(str_ed1); m_ed2.GetWindowText(str_ed2); *m_pstr=str_ed1; *m_qstr=str_ed2; *chk1=m_chk.GetCheck();//ココ if(strlen(str_ed1)==0||strlen(str_ed2)==0){ MessageBox("空白があります"); return; } if(Flag==FALSE){ if((fp=fopen(str_ed2,"r"))==NULL){ MessageBox("そのファイルはコンピューター内に存在しません"); m_ed2.SetWindowText(""); return; } } CDialog::OnOK(); } ※ダイアログBのクラスCKodomo1クラスでCKodomoのヘッダは public: CKodomo1Dlg(CWnd * pParent=NULL) CString *m_pstr; CString *m_qstr; int *chk1; int* m_FILEOK; です。 void CDragDrop6Dlg::OnDropFiles(HDROP hDropInfo) { long files; int FILEOK; char filename[256]; CchkDialog cdlg; cdlg.m_FILEOK=&FILEOK; // int n; CString str_index; files=DragQueryFile(hDropInfo, 0xFFFFFFFF,filename,256); DragQueryFile(hDropInfo, 0, filename,256); CString Cname=getFileName(filename); CString kaku; int index=-1; CKodomo1Dlg dlg; i=m_listC.GetItemCount(); kaku=strchr(filename,'.'); dlg.chk1=&chk; //for( int index=0;index<i;index++){ while((index=m_listC.GetNextItem(index,LVNI_ALL))!=-1){ str_index=m_listC.GetItemText(index,0); CString str_index2=m_listC.GetItemText(index,1); CString Rname=str_index2+"\\"+Cname; if(kaku=="."+str_index){ // n=index; cdlg.DoModal(); if(FILEOK==1){ if(chk==1){ MessageBox("上書きされます"); MoveFileEx(filename,str_index2,MOVEFILE_REPLACE_EXISTING); MoveFileEx(filename,str_index2+"\\",MOVEFILE_REPLACE_EXISTING); MoveFileEx(filename,Rname,MOVEFILE_REPLACE_EXISTING); } else{ MoveFile(filename,str_index2); MoveFile(filename,str_index2+"\\"); MoveFile(filename,Rname); } } } else if(kaku!="."+str_index){ } } }
以前よりご質問させていただいてたプログラムの一部なんですがコメントの位置、つまり
*chk1=m_chk.GetCheck(); で止まってしまいます。
これはダイアログAの「追加ボタン」を押すとダイアログBが出現し今ダイアログBにいます。
ダイアログBの関数OnOKでチェックボックスのチェックの有無をAに伝えようとしています
。何故エラーになるのでしょうか。エラー内容は
"問題が発生しました。 プログラムを終了します" です。おしえてください