MFC VC++6.0 のダイアログベースで作成したプログラム(MSHFlexGridを用いている)において、あるPCではダイアログを表示することができるのに、他のPCではダイアログを表示することができません。理由がわからずに困っています。
ソースを以下に示します。
BOOL CDefXApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
CDefXDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if ( nResponse ) {
int r = GetLastError();
}
if (nResponse == IDOK) {
}
else if (nResponse == IDCANCEL) {
}
return FALSE;
}
nResponse では-1が返り r = GetLastError() では0が返ります。
ダイアログを表示させるにはどうすればよいでしょうか?
よろしくお願いします。
追加です。
ダイアログが表示された方のPCでプログラムソースを開き、リソースからダイアログを開くと、MSHFlexGridの部分が表示できました。
しかし、ダイアログが表示されなかった方のPCでは、上記と同様に、リソースからダイアログを開くと、"ActiveXコントロール"{0ECD 〜 }"はこのコンピュータ上に登録されていません.コントロールを再登録してから再度実行してください"というメッセージが出ました。OKボタンを押すと、MSHFlexGridの部分に"ActiveXコントロール"とだけ表示されておりました。
原因はActiveXコントロールを登録していないせいではないかと考えられますが、いまいち自信がないのと、登録の仕方がわかりません。ご教授のほどよろしくお願いいたします。
自己レスです。
MSHFlexGridを登録するには、VC++6.0だけではなく、VBもインストールしなければなりませんでした。
わけわからなくてすみません。
解決です。
先の「自己レス」にある 「VBもインストールしなければ」ですが、具体的にはどうすればインストール出来るのでしょうか?
つまりVBがインストールされていない環境下でこのMSFlexGridをVC++6.0で使うのを可能にするにはどんな方法があるのでしょうか?
具体的には、VC++に付属のInstallShield for Microsoft Visual C++ 6 でMSFLXGRD.OCXもしくはMSHFLXGD.OCXを一緒にインストールする様にしても、症状は変わらないです。
ディストリビューションウイザードで作成したVBプログラムをインストールした後であれば、MSHFlexGridをVC++6.0で使用可能ですが、ユーザーに提供するプログラムの場合、全く関係のないVBプログラムをインストールしてくれとも言えないですし・・・。
MSFLXGRD.OCXをwindowsのsystem32フォルダーなりにコピーして
コマンドプロンプトや、ファイル名を指定して実行で
Regsvr32 "x:\windows\system32\MSFLXGRD.OCX"
でOCXを登録すれば使用可能になりませんか?
InstallShield での登録方法は分かりません。
ツイート | ![]() |