
No.4ベストアンサー
- 回答日時:
参考までに。
http://support.microsoft.com/default.aspx?scid=k …
#機械翻訳なのでかなり怪しい日本語ですが。原文を読むことをお勧めします。
参考URL:http://support.microsoft.com/default.aspx?scid=k …
No.3
- 回答日時:
> 書き換えのタイミングが悪いのか
どのタイミングで行ってるんですか?
参考までに。
http://homepage2.nifty.com/DSS/VCPP/MFC/Menu/MDI …
参考URL:http://homepage2.nifty.com/DSS/VCPP/MFC/Menu/MDI …
この回答への補足
次のような構造です。
BOOL CMDIApp::InitInstance()
{
InitSmptinst();
InitFilepath();
中略
CMultiDocTemplate* pMailBoxTemplate;
pMailBoxTemplate = new CMultiDocTemplate(
IDR_MAILBOXTYPE,
RUNTIME_CLASS(CMailBoxDoc),
RUNTIME_CLASS(CMailBoxFrame), // custom MDI child frame
RUNTIME_CLASS(CMailBoxView));
AddDocTemplate(pMailBoxTemplate);
以下略
そして、スプリットウインドの形で
メールボックス
を表示させます。
次の関数の中です。
BOOL CMailBoxFrame::OnCreateClient(LPCREATESTRUCT lpcs,
CCreateContext* pContext)
{
// 1行, 2列のスプリッターを作成
if (!m_wndSplitter.CreateStatic(this,1,2))
中略
// すべて動作した場合、3 つの異なるビューを含む 2 つのスプリッター ウィンドウ
// ができます。
// set up Favorites menu
TCHAR sz[MAX_PATH];
TCHAR szPath[MAX_PATH];
HKEY hKey;
DWORD dwSize;
CMenu* pMenu;
// first get rid of bogus submenu items.
pMenu = GetMDIFrame()->GetMenu()->GetSubMenu(3);
while(pMenu->DeleteMenu(0, MF_BYPOSITION));
中略
BuildFavoritesMenu(szPath, 0, pMenu);
//return 0;
return TRUE;
}
この結果、最初の親のメニューが
書き換えられていることが判明しました。
確認は、
pMenu = GetMenu()->GetSubMenu(3);
を
pMenu = GetMenu()->GetSubMenu(4);
にすると、
親ウインドウの起動時にもメニューを変更するが
それは、3番目(最初は0番)のものにしてあります。
起動時に親ウインドウのメニューを見る。
3番目の項目の内容だけがお気に入りのものになる。
つぎに、メイルボックスを作り
閉じる。
すると、親ウインドのメニューの3番目と4番目ともに
お気に入りのものに変わってしまいます。
No.2
- 回答日時:
>pMenu = GetMenu()->GetSubMenu(3);
>と同じことをチャイルドウインドウの方から
>やりたいのですが、
GetMDIFrame()で親フレームウィンドウ取得するんじゃだめ?
ありがとうございます。
pMenu = GetMDIFrame()ー>GetMenu()->GetSubMenu(3);
としたら、
pMenu
は値が確定しました。
書き換えのタイミングが悪いのか
子ウインドウ用のメニューのFavaritesの
項目は変化していません。
もしかしたら、
親ウインドウの本来のメニューが書き換えられているかもしれません。
以上、現状の報告です。
ご指導くださり、ありがとうございます。
No.1
- 回答日時:
>チャイルドウインドの中で、
>CHtmlView を表示させ
>それが選ばれたときに、
>メニューを書き換えて
>お気に入りの内容を加えて表示させたいのですが
>上手くゆきません。
何が上手くいかないかが不明。
MDIで特定の子ウィンドウがアクティブになったときの
メニューを変えたいのであれば、ウィザードでMDIを
指定したときに、子ウィンドウの有無でメニューが
変わるところがそのもの。
お気に入りの内容を表示させたいのであれば、MFCIEのソースそのもの。
この回答への補足
いつもありがとうございます。
MFCIE では、
pMenu = GetMenu()->GetSubMenu(3);
while(pMenu->DeleteMenu(0, MF_BYPOSITION));
// find out from the registry where the favorites are located.
if(RegOpenKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"), &hKey) != ERROR_SUCCESS)
{
TRACE0("Favorites folder not found\n");
return 0;
}
dwSize = sizeof(sz);
RegQueryValueEx(hKey, _T("Favorites"), NULL, NULL, (LPBYTE)sz, &dwSize);
ExpandEnvironmentStrings(sz, szPath, MAX_PATH);
RegCloseKey(hKey);
BuildFavoritesMenu(szPath, 0, pMenu);
return 0;
として、メニューを書き換えているのですが、
最初の
pMenu = GetMenu()->GetSubMenu(3);
と同じことをチャイルドウインドウの方から
やりたいのですが、
この書き換えができないのです。
すみませんが、GetMenu() の前に
何を書き加えたら良いのでしょうか?
教えていただきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBAで任意のウインドウのサイズ...
-
インタネットからPDFファイルだ...
-
子ウィンドウの存在確認
-
VBの画面で、全ウィンドウを一...
-
1クリックでモーダルを開いてか...
-
ウインドウの親子連携について
-
子ウィンドウより親ウィンドウ...
-
response.redirect <<URL>> で...
-
Excel VBA Window の設定
-
処理終了後にウインドウを閉じる
-
MDIでのメニューの変更
-
デジタル時計の時刻合わせの方...
-
スクリプトって、何ですか?ど...
-
[Java] Edgeでのアドレスバー非...
-
マイページはどこを開くの
-
Excelのワークシートが全部表示...
-
画面を閉じる(×ボタンやタスク...
-
PDFを(htmlのように)無限に縦...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのシート上に別のシー...
-
Javascript_submit()完了後に処...
-
VBの画面で、全ウィンドウを一...
-
javascriptで開いたウィンドウ...
-
ポップアップと作業ウィンドウ...
-
VBAで任意のウインドウのサイズ...
-
デスクトップ画面を4分割するには
-
1クリックでモーダルを開いてか...
-
ウィンドウの2重起動を防止したい
-
ブラウザの×ボタンを効かなくす...
-
親ウィンドウから開いた子ウィ...
-
ウィンドウ名からウィンドウオ...
-
openで開いた子ウィンドウで表...
-
ホームページ全体を拡大・縮小...
-
<EXCEL/VBA> OUTLOOKのウインド...
-
インタネットからPDFファイルだ...
-
子ウィンドウより親ウィンドウ...
-
window.Openをモーダルにできま...
-
flashmx2004でリンク先を・・・
-
助けてGmailでボタン表示が消え...
おすすめ情報