ダイアログボックスの単位を画面の座標値に変換する方法を誰かが説明できますか?MapDialogRect関数があるのを見ましたが、その変換RECTは、x、yおよびcx、cy値を画面座標値に変換したいのですが、これを実現する方法がよくわかりません。
前もって感謝します。
ダイアログボックスの単位を画面の座標値に変換する方法を誰かが説明できますか?MapDialogRect関数があるのを見ましたが、その変換RECTは、x、yおよびcx、cy値を画面座標値に変換したいのですが、これを実現する方法がよくわかりません。
前もって感謝します。
すでにウィンドウハンドルがある場合は、MapDialogRect
関数を使用してください。他の人が指摘しているように、MapDialogRect
を取りますRECT
。したがって、がない場合はRECT
、を作成できます。
RECT rc;
rc.left = x;
rc.top = y;
rc.right = x + cx;
rc.bottom = y + cy;
MapDialogRect(hdlg, &rc);
そもそもダイアログボックスのハンドルがないことが問題である場合は、MapDialogRect
関数のドキュメントに計算の実行方法が記載されています。ダイアログボックスの平均文字サイズを決定します(ドキュメントで呼び出さbaseunitX
れますbaseunitY
) 。次に、それを数式に接続します。
これにより、ダイアログボックスのクライアントの長方形が計算されることに注意してください。それでも、クライアント以外のスペースを追加する必要があります。何をしようとしているのかわからないので、クライアント以外のスペースを追加するのが適切かどうかはわかりません。