問題タブ [cmfctoolbar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1563 参照

visual-studio-2010 - CMFCToolbar ReplaceButton() によりボタンが消える

Visual Studio 2010を使用し、MFC SDI アプリケーションを操作します。メイン フレームが所有するCMFCToolbarオブジェクトがあります。

このアプリケーションでドキュメントが作成されると、MainFrame は関数を呼び出して、CMFCToolbar オブジェクトのボタンの 1 つを CMFCToolbarMenuButton に置き換えます。メニュー ボタンのコンテンツには、ドキュメントの情報が取り込まれます。メニューの作成は常に機能します。ReplaceButton の呼び出しは常に成功します。しかし、私がまだ理解していない呼び出しの視覚的な症状があります。

ReplaceButton が呼び出されるたびに、ボタンは消えます。描画されないだけでなく、クリックできません。一時的になくなりました。これは、ReplaceButton の呼び出しで破棄したばかりの古いボタンへのダングリング リファレンスがあるためだと思います。

Invalidate()、RecalcLayout() を呼び出して再描画をトリガーしようとしましたが、どちらもまだ機能していません。ボタンを表示するための唯一の信頼できる方法は、アプリケーション ウィンドウのサイズを手動で変更するか、ツールバーをドッキング解除/再ドッキングすることです。これらの状況で発生する何らかの低レベルの更新があると思いますが、手動でトリガーする方法がわかりません。

ボタンがすぐに描画されるようにする方法はありますか?

編集:コードサンプル

アップデート:

呼び出すm_wndBrushBar.AdjustLayout()と、これらの CMFCToolbar ボタンの視覚的な動作が安定するようです。これは部分的な解決策です。部分的な理由は次のとおりです。

実際の視覚的な動作が何であるかを伝えるのは困難です。すべてのビジュアル設定/状態がこれらの MFC オブジェクトと共にレジストリに保存され、アプリの起動動作を実際に変更する動的に作成されたオブジェクトの状態を保持できることが判明しました。

下のレジストリ値を削除しました

Current User -> "Local App-Wizard Generated Applications" -> [My App Name]. 私のアプリの実際の動作が何であるかを知るためだけに、これを何度も行いました。現在のバージョンの MFC に関する基本的な知識が欠けているように感じます。レジストリ契約に起因する多くのバグ。

特定のオブジェクトのレジストリ設定を防止する方法、またはこの動作を完全に停止する方法はありますか? それ以外の場合は、すべての視覚要素をリセットして、シャットダウン プロセスをより徹底する必要があると思います。レジストリ値がスタートアップ コードを無視、オーバーライド、またはバイパスしているようです。オブジェクトが起動時にどのように見えるかをコーディングすることはできますが、レジストリに値がある場合、それは役に立ちません。

0 投票する
2 に答える
1397 参照

c++ - ペインに埋め込まれた場合の CMFCToolBar ボタンの有効化/無効化

CMFCToolBar からボタンを有効/無効にする最良の方法は、使用することです。

しかし、ツールバーが CDockable ペイン内に埋め込まれている場合、それは機能しないようです。

0 投票する
1 に答える
617 参照

mfc - CMFCToolBarEditBoxButton での貼り付けイベントのキャプチャ

VS2010 に MFC SDI アプリケーションがあり、CMFCToolBar にはCMFCToolBarEditBoxButton. ユーザーが編集ボックスに何かを貼り付けたときに貼り付けイベントを処理する方法はありますか?

メイン ウィンドウで処理ON_COMMAND(ID_EDIT_PASTE, OnEditPaste)しますが、フォーカスが 内にあるときに貼り付けメッセージが発生しませんCMFCToolBarEditBoxButton

0 投票する
2 に答える
1633 参照

c++ - MFC: CMFCToolBar SetButtonStyle がスタイル TBBS_PRESSED と連携していませんか?

by制御にバグはありますか?または私は何か間違っていますか?


CMFCToolBar m_wndToolBar;
メッセージ マップの.h
ON_COMMAND(ID_MYID, &CMainFrame::OnToolBar)

void CMainFrame::OnToolBar()
{
int nIndex = m_wndToolBar.CommandToIndex(ID_MYID);
UINT nState = m_wndToolBar.GetButtonStyle(nIndex);
if(nState & TBBS_PRESSED)
nState &= ~TBBS_PRESSED;
else
nState |= TBBS_PRESSED;
m_wndToolBar.SetButtonStyle(nIndex,nState);
m_wndToolBar.InvalidateButton(nIndex);
}

ボタンをクリックすると、ボタンが押された状態に設定する必要があり、ユーザーがもう一度クリックすると、ボタンが押されなくなります。

ボタンをクリックしても何も起こりません:(

0 投票する
1 に答える
874 参照

c++ - CMFCToolBar と CMFCMenuBar は、既定では動的項目を表示しません

CMFCToolBar と CMFCMenuBar を使用する MFC アプリケーションを作成しました。初めてアイテムの状態を保存します。動的アイテムを変更または追加すると、最初の状態が表示されますが、削除されたアイテムはそこにとどまり、追加されたアイテムは表示されません。その後、すべてのアイテムがレジストリでシリアル化され、毎回読み込まれることがわかりました。私たちのすべてのアプリケーションは、アプリケーションのモジュールから動的なメニュー項目またはツールバー ボタンをロードします。

ツールバーやメニューバーに動的アイテムを追加するために使用できる唯一の方法でしたが、これは解決策ではありません.カスタマイズツールを利用したり、メニューバーの位置を保存したりしていません.これはマイクロソフトが人々に望んでいることですか?メニューとツールバーで? 一度押すと変更は許可されませんか?または私はこれについて何かが欠けていますか?

0 投票する
1 に答える
533 参照

c++ - 大きなアイコンで CMFCToolbar の [カスタマイズ] ボタンが見にくい理由

ツールバーが大きいとカスタマイズボタンのアイコンが見にくい 直し方 ここに画像の説明を入力

引き伸ばされて解像度が悪くなりますが、修正する方法はありますか?

0 投票する
1 に答える
420 参照

c++ - オプション チェック メニューを CMFCToolBar に追加して、一度に複数のチェックを許可する方法

一度に複数のオプションをチェックできるようにするメニュー ボタンを CMFCToolbar に追加したい。 ここに画像の説明を入力