私はMFCアプリケーションを開発していますが、最近、Windowsのタイトルバーからアイコンを削除するための良い方法を探していますが、閉じるボタンは保持しています。 2つの明らかな候補ソリューションは、システムメニュースタイルをオフにするか、ツールウィンドウスタイルを使用していますが、システムメニューを無効にしたり、縮小したツールウィンドウタイトルバーを使用しないことをお勧めします。多くのMFCアプリケーションにはこの機能があります。標準的な方法がありませんか?クローズボタンやシステムメニューを削除せずに、Windowsのタイトルバーからアイコンを削除しますか?
6
A
答えて
2
ユーザーがあなたのキャプションを右クリックしたかどうかを検出するためにWM_NCRBUTTONDOWN
を使用して、システムメニューを表示することができます。
0
システムメニューを削除してから別の場所に戻すのはどうでしょうか(クローズボタンなどの隣に)?
0
アイコンがないと、ユーザがシステムメニューにアクセスするための唯一の方法は、タイトルバーを右クリックすることです。
これが念頭に置いていたのであれば、メインフレームでWM_RBUTTONDOWNを処理し、右クリックがタイトルバーにあるかどうかを計算できます。
int clickX = GET_X_LPARAM(lParam);
int clickY = GET_Y_LPARAM(lParam);
CRect frameRect;
mainFrame.GetWindowRect(&frameRect);
int titleBarHeight = GetSystemMetrics(SM_CYCAPTION);
if (clickX >= frameRect.left &&
clickX <= frameRect.right &&
clickY >= frameRect.top &&
clickY <= frameRect.top + titleBarHeight)
{
TrackPopupMenu(m_systemMenu);
}
4
セットWS_EX_DLGMODALFRAME
拡張スタイル。
2
完全に透明なアイコンを使用できます。
0
アイコンを削除し、Delphiでのサンプルコード:
const
WM_ResetIcon = WM_APP - 1;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
protected
procedure WMResetIcon(var Message: TMessage); message WM_ResetIcon;
end;
implementation
procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(Handle, WM_ResetIcon, 0, 0);
end;
procedure TForm1.WMResetIcon(var Message: TMessage);
const
ICON_SMALL = 0;
ICON_BIG = 1;
begin
DestroyIcon(SendMessage(Handle, WM_SETICON, ICON_BIG, 0));
DestroyIcon(SendMessage(Handle, WM_SETICON, ICON_SMALL, 0));
end;
同様のコードはMFCのために働くべきです。基本的には、正しい場所でNULLにWM_SETICONする必要があります。
関連する問題
- 1. C#2005:フォームのタイトルバーからアイコンを削除します
- 2. Windowsフォームのタイトルバーを削除します。
- 3. タイトルバーをWindowsフォームから削除する(Windows 10スタイル)
- 4. リモートブランチを削除せずにローカル "リモートブランチ"を削除しますか?
- 5. エンティティフレームワークを使用してベーステーブルから削除せずにテーブルを削除せずにテーブルを削除する
- 6. nhibernate:削除せずにコレクションからオブジェクトを削除する
- 7. ポッドを削除せずにサービスから削除する方法
- 8. WPFでシステムメニューを削除するには?
- 9. データベースから削除せずに削除ボタンを押すと、インデックスページのテーブルから行を削除するには
- 10. データソースからアイテムを削除せずにリストからアイテムを削除する - c#
- 11. テーマappceleratorを変更せずにタイトルバーを削除するには?
- 12. サーバから削除せずにSVNからディレクトリを削除する
- 13. uwpアプリケーションからクローズボタンを無効または削除する
- 14. アプリケーションからタイトルバーを削除できません
- 15. HDから削除せずにステータスからgit untrackedファイルを削除
- 16. IBMグラフで、グラフ全体を削除してインスタンスを削除せずに最初からやり直す方法
- 17. データベース内のデータを削除せずにFirebaseリサイクラビューアダプタからデータを削除する
- 18. SearchViewを削除するにはアイコンを削除します
- 19. "テーブルから削除"テーブルを削除しませんか?
- 20. Androidデスクトップからアイコンを削除する
- 21. アクションバーからアイコンを削除するxamarin
- 22. .gifリポジトリから削除せずに既存のファイルを削除する
- 23. データベースから削除せずにhas_manyからレコードを削除しますか? (レール2.3.5)
- 24. Android - TabHost/TabWidgetからアイコンを削除
- 25. DBからオブジェクトを削除せずにfetchedResultsControllerからオブジェクトを削除できますか?
- 26. マルチレコードブロックの削除アイコンを削除します
- 27. 削除は、データベースにそれを削除せずに協会からオブジェクトを削除
- 28. タイトルバーを削除しますが、コントロールボックスは保持しますか?
- 29. ローカルリポジトリのコードを削除せずに最後のGithubコミットを削除します
- 30. PyQTプログラムのタイトルバーを削除しますか?
これは答えであったはずです。 – c00000fd