mfc-ml

2000年08月

31

[mfc 25465] RE: [mfc 25463] Re: SplitterWnd のサイズ割り

平田@マイクロフトです nukuさん解答ありがとうございます。

> void CMainFrame::OnSize(UINT nType, int cx, int cy)
> {
>   CFrameWnd::OnSize(nType, cx, cy);
>   CRect rc;
>   mSplitterUp.GetClientRect( rc);  *1
>   mSplitterUp.SetColumnInfo( 0, cx / 2, 0);
>   mSplitterUp.SetColumnInfo( 1, cx / 2, 0);
> // RecalcLayout();
>     if (nType == SIZE_MAXIMIZED)
>         mSplitterUp.RecalcLayout();
> }
>

 MainFrameではなくてSplitterWndの方のRecalcLay
out()をコールするのがポイントだったのですね。試してみたらうまく動きまし
た。ありがとうございました。
31

[mfc 25464] Re: 市場に出した OCXへのイベント追加

うまく説明できなくてすみません。

> OCXはATLですかMFCですか?
OCXは、MFCです。

> [ClassWizard]の[ActiveX イベント]でイベントの
> 追加じゃ駄目なんでしょうか? 
私も最初は上記方法でやってみました。
しかし、以前のOCXでビルドしたアプリが新しく追加
したイベントが発生したときに固まってしまいました。

で、いろいろな書籍等を調べていくと、”一度公開し
たインターフェイスには新しくメソッド等は追加して
はいけない”という事が書いてありました。そして
”追加する際にはGUIDを新しく取得し、別のインター
フェイスを準備しなければならない”とまでは書いて
あるのですが、実際の方法が書いてありませんでした。

試しに、ODLファイルを下記のように書き換えてました。
そしたらうまく動作してくれたのですが、ほとんど勘で
やってしまったので、自信がありません。
ちゃんとした方法を知っていませんか?

[ uuid(670D270B-7100-0003-0004-00400540871A), 
  helpstring("Event interface for FmCtrl Control") ]
dispinterface _DFmCtrlEvents
{
methods:
//{{AFX_ODL_EVENT(CVTL4FormCtrlCtrl)
[id(1)] void OnPopup(BSTR Filter);
[id(2)] void OnSearch();
//}}AFX_ODL_EVENT
};

// ↓ バージョンアップのため追加
[ uuid(8748BEA0-900E-1100-9500-0000F4ADBEC3), 
  helpstring("Event interface for FmCtrl Control") ]
dispinterface _DFmCtrlEvents2
{
methods:
//{{AFX_ODL_EVENT(CVTL4FormCtrlCtrl)
[id(1)] void OnPopup(BSTR Filter);
[id(2)] void OnSearch();

[id(3)] void OnNext(); // ← 新しく追加したいイベント
//}}AFX_ODL_EVENT
};
// ↑ バージョンアップのため追加したところ

[ uuid(670D270C-7100-1100-A314-00400540871A), 
  helpstring("FmCtrl Control"), control ]
coclass FmCtrl
{
[source] dispinterface _DFmCtrlEvents;
[default, source] dispinterface _DFmCtrlEvents2;
};
31

[mfc 25463] Re: SplitterWnd のサイズ割り

以下でどうでしょうか?

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
  CFrameWnd::OnSize(nType, cx, cy);
  CRect rc;
  mSplitterUp.GetClientRect( rc);  *1
  mSplitterUp.SetColumnInfo( 0, cx / 2, 0);
  mSplitterUp.SetColumnInfo( 1, cx / 2, 0);
// RecalcLayout();
    if (nType == SIZE_MAXIMIZED)
        mSplitterUp.RecalcLayout();
}
31

[mfc 25462] Re: 市場に出したOCXへのイベント追加

OCXはATLですかMFCですか?

> 今、以前作成したOCXのバージョンアップでイベントを
> 追加しようとしています。

 なんだかよくわかりませんが、MFCだとすると、[ClassWizard]の[ActiveX イベ
ント]でイベントの追加じゃ駄目なんでしょうか? ATLだともっと面倒ですけど。


---
Soft Planet Co. Ltd.
           松本 弘之
  Matsumoto, Hiroyuki
31

[mfc 25461] 市場に出したOCXへのイベント追加

[開発環境] VC++6.0 (SP3)

今、以前作成したOCXのバージョンアップでイベントを
追加しようとしています。

GUIDを新しく取得し、インターフェイスを用意してないと
いけないことまで分かっているのですが、どうやって、
インターフェイスの追加をしたらよいのか分かりません。

どなたかご存知ありませんか?
記事検索
Amazon.co.jp
  • ライブドアブログ