문제
어떻게 만들기 버튼을 통제(과 CreateWindow
의 BUTTON
창 클래스)에 있는 표준 시스템 전체 크기(높이가 특히)과 일치하는의 나머지 부분 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);
가 50 고 14 은 해당 DLU 치수 4 고 8 은 수직 및 수평 템플릿을 대화 단위는 각각에 기초하여, GetDialogBaseUnits()
기능 문서는 말입니다.
아무것의 완벽한
지 로 Anders 지적한 측정 기준을 기반으로 시스템에서 글꼴입니다.는 경우에 당신의 창을 사용하는 쉘을 대화 글꼴 또는 단순히 아무것도 만들지 않고 당신의 눈을 피,당신은 꽤 많습니다.
를 얻을 당신의 자신의 대화""기본 장치,당신이 검색하는 현재의 텍스트 메트로 GetTextMetrics()
고 사용할 문자 높이 평균 폭(tmHeight
고 tmAveCharWidth
의 TEXTMETRIC
구 각각)및 번역으로 그들을 MulDiv 당신의 자신에 의하여, 지 당신은 대화,다음 MapDialogRect()
모든 일을 할 것입니다.
Note tmAveCharWidth
만에 근접하는 평균 실제 문자 폭도를 사용하는 것이 좋 GetTextExtentPoint32()
기능에는 알파벳 문자 집합을 대신 합니다.
보:
간단한 대체
는 경우 버튼만을 제어할의 크기를 조정,자동으로 사용할 수도 있습니다 BCM_GETIDEALSIZE
메시지 Button_GetIdealSize()
매크로(Windows XP 만)를 검색하는 최적의 너비와 높이에 맞는 아무것도 버튼을 포함,비록 그것이 예쁘지 않없이 여백 주위에 적용 단추의 텍스트입니다.
다른 팁
이것은 MSDN 을 말한다: 설계 사양 및 지침-비주얼 디자인:레이아웃.
기본 크기의 버튼을 50x14DLUs,계산할 수 있는 픽셀을 사용하여 예를 표시 GetDialogBaseUnits.
이 MapDialogRect 기능 할 것으로 보인 계산을 위해 당신입니다.
@macbirdie:사용하지 않아야 합니다 GetDialogBaseUnits(),그것을 기반으로 시스템의 기본 글꼴(추한 bitmap font).를 사용해야 합 MapDialogRect()