ActiveXでのMSHFlexGridのCreate – プログラミング – Home

通知
すべてクリア

[解決済] ActiveXでのMSHFlexGridのCreate


おさる
 おさる
(@おさる)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

>はじめまして。いまMSHFlexgridを使用してオリジナルグリッドコントロールを作成
>しているのですが、肝心のMSHFlexGridのCreateが出来ません。
>よい方法がありましたら教えてください。
追記します。
開発環境は下記のとおりです。
Microsoft Visualstudio Enterprise 6.0(SP5)
Windows 2000


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

マズは前のスレッド同じ質問のようなので解決にしておいてください
または、管理者に削除要請してください

これまでにやった作業手順明記してください
どこの手順が間違っているか指摘しようがありません


返信引用
おさる
 おさる
(@おさる)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

woodさん返信ありがとうございます。
ActiveXプロジェクトは下記の手順で作成しています。
①まずActiveXControlWizardでサブクラスをnoneにしてスケルトンを生成します。
②つづいてコンポーネントの追加で階層フレキシブルグリッドをコントロールに追加しま
す。
③②の作業でmsflexgirdのファイルがプロジェクト内に生成されるので、これをつかって
 クラスの追加で派生クラスを作ります。
④ActiveXのコントロールクラス(ctl.h/cpp)に派生クラスのクラスを生成し、
 ActiveXのコントロールクラスのコンストラクタとデストラクタにそれぞれクラスの
 newとdeleteを記述しておきます。
⑤クラスウィザードでコントロールクラスにOnCreate(LPCREATESTRUCT lpCreateStruct)
 を生成し、ここで派生クラスのCreateを記述します。
 記述は下記のとおりです。
 pGrid->Create(_T(STATIC), IDM_MYGRID, WS_CHILD | WS_VISIBLE,
  CRect(0, 0, 200, 100), this, 900001, NULL);
 (_T(STATIC)は"でも結果は同じでした)

⑥コンパイルはとおるのですが、
 例外処理 (初回) は TSTCON32.EXE (MFCO42D.DLL) にあります: 0xC0000005: Access
Violation
 でabortします。

これと同様にexeプロジェクトのビュークラスに記述したらグリッドはCreateされます。
多分、Createのタイミングに誤りがあるのでしょうがどこでCreateすればいいのかわかり
ません。

簡単な記述でしたがこれでわかるでしょうか?もしわかりましたらよろしくお願いしま
す。


返信引用
おさる
 おさる
(@おさる)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

>例外処理 (初回) は TSTCON32.EXE (MFCO42D.DLL) にあります: 0xC0000005: Access
Violation
追記します。

エラーはMSCフォルダの「occcont.cpp」の矢印の部分で出ています。

BOOL CWnd::InitControlContainer()
{
 TRY
 {
  if (m_pCtrlCont == NULL)
→ m_pCtrlCont = afxOccManager->CreateContainer(this);
 }
 END_TRY
 // Mark all ancestor windows as containing OLE controls.
 if (m_pCtrlCont != NULL)
 {
  CWnd* pWnd = this;
  while ((pWnd != NULL) && !(pWnd->m_nFlags & WF_OLECTLCONTAINER))
  {
   pWnd->m_nFlags |= WF_OLECTLCONTAINER;
   pWnd = pWnd->GetParent();
   if (! (GetWindowLong(pWnd->GetSafeHwnd(), GWL_STYLE) & WS_CHILD))
    break;
  }
 }
 return (m_pCtrlCont != NULL);
}

よろしくお願いします。


返信引用
おさる
 おさる
(@おさる)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

ATLでコントロールの再利用が可能であることがわかりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました