動的に生成したViewがアクティブになったときの印刷コマンドについて

[戻る]
YAPPY 2003/02/08(土) 23:38:33
お世話になっています。
過去ログを参考にして、下記のような構造にViewを作成したのですが、
ウィンドウ生成直後はCHogeView1がアクティブViewに
なっているので印刷コマンドがEnableとなるのですが
CHogeView2をクリックしてアクティブViewをCHogeView2に
変更すると印刷コマンドがDisableになってしまいます。

CHogeView2のCommand UpdateハンドラでEnableに
するしか方法はないのでしょうか?

+---------------------+
| CHogeView1          |
|                     |
| +----------------+  |
| | CHogeView2     |  |
| |                |  |
| |                |  |
| +----------------+  |
+---------------------+

CHogeView1はAppWizardが生成したクラス。
CHogeView2はCViewを基本クラスとした自作クラスです。

CHogeView2の作成は以下のコードで行っています。

int CHogeView1::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
  if (CView::OnCreate(lpCreateStruct) == -1)
    return -1;
    
  // TODO: この位置に固有の作成用コードを追加してください
  BOOL    bRet;
  m_hogeView2 = (CHogeView2*)RUNTIME_CLASS(CHogeView2)->CreateObject();
  bRet = m_hogeView2->Create(NULL, NULL, WS_CHILD | WS_VISIBLE, 
    CRect(0, 0, 0, 0), this, 0,
    (CCreateContext*)lpCreateStruct->lpCreateParams);
  if (!bRet)
    return -1;
    
  return 0;
}

ご教授よろしくお願いします。

YAPPY 2003/02/08(土) 23:41:15
ごめんなさい。環境を書き忘れました。

WinMe, VC++6.0SP5 MFC(SDI)です。

ナオーバ 2003/02/09(日) 03:09:03
関係がないかもしれないのですが、

"印刷コマンド"がメニューの選択、ツールバーの選択等のコマンドハンドラ?の場合で
このコマンドハンドラがCHogeView1にしかないからでは?
例えば印刷コマンドのIDをIDM_PRINTとした時、CHogeView1::OnProint()しかないとか。
CHogeView2にも同じ事するか、メインフレームで印刷コマンドを実行するか。

全くの検討違いの時は無視して下さい

古いスレッドには追加発言できません。