◀ANSI版開発トップへ
  • 1197 Popup Helpの実装方法について
    • 1205 Re:Popup Helpの実装方法について
      • 1215 Re2:Popup Helpの実装方法について
        • 1232 Re2:Popup Helpの実装方法について
          • 1233 Re3:Popup Helpの実装方法について
            • 1234 Re4:Popup Helpの実装方法について
          • 1239 Re3:Popup Helpの実装方法について
            • 1240 Re3:Popup Helpの実装方法について
              • 1249 Re4:Popup Helpの実装方法について
                • 1250 Re4:Popup Helpの実装方法について
                • 1254 Re5:Popup Helpの実装方法について
  • [1197] Popup Helpの実装方法について げんた 2002年01月18日 13:51

    Popup Help/Context Menuのために,全てのダイアログにOnPopupHelpが追加されていますが,全く同じOnPopupHelpを各クラスにちりばめるより以下のようにCDialogにまとめた方がプログラムサイズの減少と保守性の向上が見込まれると思います.
    処理が変わるわけではないので動作には全く影響ないですけど,
    それに,共通設定とタイプ別設定には適用できないのか(T_T)

    CDialog.hで


    virtual BOOL OnPopupHelp( WPARAM, LPARAM ); //@@@ 2002.01.07 add
    virtual BOOL OnContextMenu( WPARAM, LPARAM ); //@@@ 2002.01.07 add
    virtual LPVOID GetHelpIdTable(void);

    ---
    CDialog.cppで

    case WM_HELP: return OnPopupHelp( wParam, lParam );
    case WM_CONTEXTMENU:return OnContextMenu( wParam, lParam );

    BOOL CDlgAbout::OnPopupHelp( WPARAM wPara, LPARAM lParam )
    {
    HELPINFO *p = (HELPINFO *)lParam;
    ::WinHelp( (HWND)p->hItemHandle, m_szHelpFile, HELP_WM_HELP, (DWORD)(LPVOID)GetHelpIdTable() );
    return TRUE;
    }

    BOOL CDlgAbout::OnContextMenu( WPARAM wPara, LPARAM lParam )
    ::WinHelp( m_hWnd, m_szHelpFile, HELP_CONTEXTMENU, (DWORD)(LPVOID)GetHelpIdTable() );
    return TRUE;
    }

    ---
    以下の関数を各クラスに追加
    DWORD* C***Dialog::GetHelpIdTable(void)
    {
    return p_helpids;
    }
    • [1205] Re:Popup Helpの実装方法について みく 2002年01月18日 20:29

      そのように修正したものを 20020117help.zip
      としてアップしました。
      p_helpids[]のstaticをはずさないとAPエラー
      になるのは、そういうものなんでしょうか?

      ssrc_2002-01-17.lzh
      ssrc_2002-01-17_plus.lzh
      に対してpatchを当ててください。
      • [1215] Re2:Popup Helpの実装方法について みく 2002年01月19日 07:35

        マクロ画面のエディット項目の左のラベル
        のヘルプが間違ってるので、タブオーダー
        を変更しました。
        20020117help2.zip
        • [1232] Re2:Popup Helpの実装方法について みく 2002年01月20日 08:27


          NewMainでリソースファイルが元に戻ってしまうようなので再アップします。
          あと、CDialog.cpp で p_helpids の static をはずしました
          (他ははずしたのにここだけはずし忘れてました)。

          #NewMainがビルドできないんですが...
          • [1233] Re3:Popup Helpの実装方法について やざき 2002年01月20日 13:09

            ▼ みくさん
            >
            > NewMainでリソースファイルが元に戻ってしまうようなので再アップします。
            > あと、CDialog.cpp で p_helpids の static をはずしました
            > (他ははずしたのにここだけはずし忘れてました)。
            >
            > #NewMainがビルドできないんですが...

            たしかに、VCではビルドできませんね。

            #ifdef _DEBUG
            #ifndef GSTR_MUTEX_SAKURA
            #define GSTR_MUTEX_SAKURA "MutexSakuraEditor_DEBUG"
            #define GSTR_MUTEX_SAKURA_CP _T("MutexSakuraEditorCP_DEBUG")
            #define GSTR_MUTEX_SAKURA_INIT _T("MutexSakuraEditorInit_DEBUG")
            #endif
            #else
            #ifndef GSTR_MUTEX_SAKURA
            #define GSTR_MUTEX_SAKURA "MutexSakuraEditor"
            #define GSTR_MUTEX_SAKURA_CP _T("MutexSakuraEditorCP")
            #define GSTR_MUTEX_SAKURA_INIT _T("MutexSakuraEditorInit")
            #endif
            #endif

            の_Tって何者ですか?
            • [1234] Re4:Popup Helpの実装方法について やざき 2002年01月20日 13:21

              ▼ やざきさん
              > の_Tって何者ですか?

              って調べろってことでしたね。
              _Tが未定義というエラーがでるところで、
              #include <tchar.h>
              して、
              CCommandLine.hにあった
              CCommandLine* CCommandLine::_instance=0;
              を
              CCommandLine.cppに移動したらビルドできましたよ > みくさん
          • [1239] Re3:Popup Helpの実装方法について hor 2002年01月20日 16:05

            ▼ みくさん
            > NewMainでリソースファイルが元に戻ってしまうようなので再アップします。

            [タイプ別設定]-[スクリーン]-「SPACEの挿入」で表示されるヘルプが【文字色】になってます。
            すでに修正済みでしたらごめんなさい。
            • [1240] Re3:Popup Helpの実装方法について みく 2002年01月20日 17:01

              >発言者: hor
              >[タイプ別設定]-[スクリーン]-「SPACEの挿入」で表示されるヘルプが【文字色】になってます。

              報告ありがとうございます。
              確かにソースが間違ってます。

              #次回差分をアップする機会に修正します。

              CPropTypes.cpp:115行目(以下のように修正)
              IDC_CHECK_INS_SPACE, HIDC_CHECK_INS_SPACE, //スペースの挿入

              sakura.hh:357行目(以下の行を追加)
              #define HIDC_CHECK_INS_SPACE 11311 //スペースの挿入

              sakura.rtf(以下を追加)
              \trowd\pard\plain\f0\fs20
              #{\footnote HIDC_CHECK_INS_SPACE}
              ${\footnote SPACEの挿入}
              【SPACEの挿入】\par
              タブの代わりにタブ幅に相当するスペースを挿入します。\par
              \page
              • [1249] Re4:Popup Helpの実装方法について あろか 2002年01月20日 22:06

                ごめんなさい。>All
                > #NewMainがビルドできないんですが...
                警告削減につづきまたやってしまいました、すみません。気をつけます。
                20020117plusと20020117help,2とhelp20020117があって、多分パッチをひとつ当て忘れたのです。
                #さらに0103版で行った修正に0108,0114版で行った修正とをマージしてるうちに消えて(戻して)しまったのかも。

                > CCommandLine.hにあった
                > CCommandLine* CCommandLine::_instance=0;
                VCではヘッダに置けない仕様のようですね。
                アップロードしたあとに他のサイトでこの制限を知りましたが修正する前に寝てしまいました。

                > の_Tって何者ですか?
                CreateMutexの第3引数は LPCTSTR のようなので _T をつけました。
                こうすると内部がユニコード処理でもそのままでソースが使えるとかそういうことだったと思います。サクラには必要なかったかも。。。
                • [1250] Re4:Popup Helpの実装方法について みく 2002年01月20日 23:15


                  >20020117plusと20020117help,2とhelp20020117があって、多分パッチをひとつ当て忘れたのです。
                  >#さらに0103版で行った修正に0108,0114版で行った修正とをマージしてるうちに消えて(戻して)しまったのかも。

                  いえいえ。これは私がアップするファイル名とかが
                  わかりづらかったのが原因です。今後はもっとわか
                  りやすくするよう気をつけます。
                  #今回は修正が重なっていないので、差分ファイルは後から当てても大丈夫みたいです。
                • [1254] Re5:Popup Helpの実装方法について げんた 2002年01月21日 09:45

                  >> CCommandLine* CCommandLine::_instance=0;
                  >VCではヘッダに置けない仕様のようですね。
                  普通はこういう変数宣言をヘッダに書くと,2つ以上のオブジェクトに実体ができて重複シンボル検出でリンクエラーになりますよね.

                  エラーにならない方がどうかしているのでは?