Dialog-Units berechnen...
-
HAllo
hat schon mal jemand Screen-Units (Pixel) in Dialog-Units (die Einheit, die auf Dialogen verwendet wird) umgerechnet.
Gibt es vielleicht eine Funktion für sowas ?
Ich meine nicht die Funktion "MapDialogRect",
denn mit der kann man nur Dialog-Units in Screen-Units umrechnen, oder ???Danke
-
You can use the MapDialogRect function to convert dialog box units into pixels, but there is no function that will convert pixels into dialog box units. You can use the formulas shown here to perform this conversion.
-
Ich verstehe diese ... Formeln einfach nicht !!!
-
ich kenn mich damit auch nicht aus.
aber guck mal in die doku zu GetDialogBaseUnits:
Similarly, to convert from pixels to dialog template units, use the following formulas:
templateunitX = MulDiv(pixelX, 4, baseunitX); templateunitY = MulDiv(pixelY, 8, baseunitY);aber da GetDialogBaseUnits nur mit der System Schrift funktioniert die eh kein dialog benutzt sollte man diese Funktion nicht verwenden.
siehe hier: http://weblogs.asp.net/oldnewthing/archive/2004/02/17/74811.aspx
aber unter http://support.microsoft.com/kb/145994/EN-US/ findet man einen trick wie man mit hilfe von MapDialogRect an die richtigen Base Units kommt. (Method Two)
-
ColA00 schrieb:
Ich verstehe diese ... Formeln einfach nicht !!!
Nun ja. Aber das sollte dichnicht daran hindern sie anzuwenden. Es wäre zwar wünschenswert auch zu verstehen, wa sman macht, aber man kann ja erstmal damit arbeiten und sich dass dann später noch mal angucken.
-
Danke

Das scheint zu funktioneieren:
void WU2DU(HWND hwnd,RECT *rc) { TEXTMETRIC tm; SIZE size; RECT rc2; rc2.left=4; rc2.right=4; rc2.top=8; rc2.bottom=8; MapDialogRect(hwnd,&rc2); long DUy=rc2.bottom; long DUx=rc2.right; rc->left=MulDiv(rc->left,4,DUx); rc->right=MulDiv(rc->right,4,DUx); rc->top=MulDiv(rc->top,8,DUy); rc->bottom=MulDiv(rc->bottom,8,DUy); return; }
-
Hi ColA00, mich würde interessieren wofür man das brauch. Schreibst du gerade einen Resourcen-Editor oder sowas?
-
Hallo
Also erst einmal Stimmt mein Code nicht ganz:
Man brauch keine TEXTMETRIC und auch keine SIZE Struktur.
Das steht nur noch da, weil ich vorher die Höhe und Breite mit "GetTextMetrics" und "GetTextExtentPoint32" berechnet habe.@ inteer:
Ja hatte ich eigentlich vor, mal sehen wie weit ich komme