제목 표시줄 버튼 또는 Windows 에서 제거 시스템 메뉴 아이콘을 죽겠다 없이 닫으십시오?

39 m, MFC 응용 프로그램 및 I& i& 개발하고 최근 좋은 방법을 찾고, ve # 39 에서 유지할 수 있지만, Windows 제목 표시줄에 아이콘 분리하십시오 닫으십시오 버튼를. 두 후보 솔루션은 명백하네 선반가공 끕니까 도구를 사용하여 시스템 메뉴 스타일 또는 윈도우 스타일, 하지만 난 시스템 메뉴 또는 사용하지 않는 포지셔닝하십시오 비활성화하려면 말라비틀어진 도구에서는 창 제목 표시줄. 이 때문에 많은 기능을 MFC 애플리케이션마다 아닌가 싶다. 내가 부족한 일부 표준 방식으로 업무를 수행하는 이?

답변 6 개

'세트' WS_EX_DLGMODALFRAME 확장됨 스타일.

Markus Safar
c00000fd
그는 5년 전 댓글을 달았습니다
0

39 이 should&, ve been 해답이야

완전 투명해집니다 아이콘를 사용할 수 있습니다.

만약 사용자가 사용할 수 있습니다 '를' 에 마우스 오른쪽 버튼으로 클릭한 후 WM_NCRBUTTONDOWN 탐지합니다 캡션에 표시하십시오 시스템 메뉴를.

델파이 코드에서 있는 샘플 절감뿐만 아이콘:

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 로 하면 됩니다.

내가 사용자를 위한 유일한 방법은 없이 아이콘을 마우스 오른쪽 단추로 클릭합니다 시스템을 액세스하려면 메뉴는 제목 표시줄 통해 짐작할 수 있을 것이다.

39 의 경우 that& 너희는너희가 인도하심이라만일 염두에 두고 처리할 수 있습니다 다음 주 에 출연하여 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);
}

제거 후 다시 또 다른 어떤 궁극적인 목표는 시스템 메뉴를 내놓고 유르젤 배치하십시오 (말하도다 닫기 버튼을 옆에 상술합니다.)?