문제

어떻게 만들기 버튼을 통제(과 CreateWindowBUTTON 창 클래스)에 있는 표준 시스템 전체 크기(높이가 특히)과 일치하는의 나머지 부분 Windows 응용 프로그램은 무엇입니까?나의 과정을 DPI 계정으로 그리고 아마도 다른 설정합니다.

말:USE_CW_DEFAULT 폭과 높이는 결과에 0,0 크기 버튼을,그래서 그 해결책이 아닙니다.

도움이 되었습니까?

해결책 2

에 완벽하다,어떤 세상을...

표준을 만들기 버튼을 우리가 이렇게하려면:

LONG units = GetDialogBaseUnits();
m_hButton = CreateWindow(TEXT("BUTTON"), TEXT("Close"), 
                 WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 
                 0, 0, MulDiv(LOWORD(units), 50, 4), MulDiv(HIWORD(units), 14, 8),
                 hwnd, NULL, hInst, NULL);

5014 은 해당 DLU 치수 48 은 수직 및 수평 템플릿을 대화 단위는 각각에 기초하여, GetDialogBaseUnits() 기능 문서는 말입니다.


아무것의 완벽한

로 Anders 지적한 측정 기준을 기반으로 시스템에서 글꼴입니다.는 경우에 당신의 창을 사용하는 쉘을 대화 글꼴 또는 단순히 아무것도 만들지 않고 당신의 눈을 피,당신은 꽤 많습니다.

를 얻을 당신의 자신의 대화""기본 장치,당신이 검색하는 현재의 텍스트 메트로 GetTextMetrics() 고 사용할 문자 높이 평균 폭(tmHeighttmAveCharWidthTEXTMETRIC 구 각각)및 번역으로 그들을 MulDiv 당신의 자신에 의하여, 당신은 대화,다음 MapDialogRect() 모든 일을 할 것입니다.

Note tmAveCharWidth 만에 근접하는 평균 실제 문자 폭도를 사용하는 것이 좋 GetTextExtentPoint32() 기능에는 알파벳 문자 집합을 대신 합니다.

보:


간단한 대체

는 경우 버튼만을 제어할의 크기를 조정,자동으로 사용할 수도 있습니다 BCM_GETIDEALSIZE 메시지 Button_GetIdealSize() 매크로(Windows XP 만)를 검색하는 최적의 너비와 높이에 맞는 아무것도 버튼을 포함,비록 그것이 예쁘지 않없이 여백 주위에 적용 단추의 텍스트입니다.

다른 팁

이것은 MSDN 을 말한다: 설계 사양 및 지침-비주얼 디자인:레이아웃.

기본 크기의 버튼을 50x14DLUs,계산할 수 있는 픽셀을 사용하여 예를 표시 GetDialogBaseUnits.

MapDialogRect 기능 할 것으로 보인 계산을 위해 당신입니다.

@macbirdie:사용하지 않아야 합니다 GetDialogBaseUnits(),그것을 기반으로 시스템의 기본 글꼴(추한 bitmap font).를 사용해야 합 MapDialogRect()

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top