削除アイコンはWindowsのタイトルバーなditchingりボタンまたはシステムメニューにたどり着けるのか!?
-
08-06-2019 - |
質問
の開発をしているMFCアプリケーションっての検索方法のアイコンからタイトルバーが保持のボタンを押します。を明らかな解決案を感じることがあることをシステムメニューでスタイルのツール画面でスタイルが、私はあまり好きではないので無効にするシステムのメニューまたは利用の収縮ツールウィンドウタイトルバーがあります。多くのMFCアプリケーションこの機能がんワンダー:私は欠かの標準的な方法?
解決
利用できる WM_NCRBUTTONDOWN
の検出を行えるようにした場合は右クリックし、ごキャプションとそのシステムメニューです。
他のヒント
セット WS_EX_DLGMODALFRAME
延長します。
を使用できる完全な透明性があります。
うつくのシステムメニューで、そういう場所yourseld(例えば次の閉じるボタンなど
なく、アイコンの思想のためのユーザーへのアクセスシステムメニューは右クリックのタイトルバー.
このかた、お取り扱うことができ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);
}
サンプルコードインを除去するアイコン:
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.基本的にする必要がありますが、すぐにWM_SETICONをNULLに位置しています。
所属していません StackOverflow