この記事は2019年01月24日に投稿しました。
目次

Visual C++.NETではじめるWin32APIシステムプログラミング
- 作者: 北山洋幸
- 出版社/メーカー: カットシステム
- 発売日: 2002/05
- メディア: 単行本
- 購入: 1人 クリック: 3回
- この商品を含むブログ (3件) を見る
1. はじめに
こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。
今回は業務で使用しているWin32APIでデバイスコンテキストに描画する文字列の幅と高さを取得する方法についてです。
2. Win32APIでデバイスコンテキストに描画する文字列の幅と高さを取得する
Win32APIでデバイスコンテキストに描画する文字列の幅と高さを取得するには、GetTextExtentPoint32関数を使用します。
書式
BOOL GetTextExtentPoint32(
HDC hdc,
LPCSTR lpString
int cbString,
LPSIZE lpSize
);
引数
hdc
デバイスコンテキストのハンドル
lpString
文字列へのポインタ
cbString
文字列バッファのサイズ(バイト数)
lpSize
文字列のサイズ(幅と高さ)を受け取る構造体へのポインタ
戻り値
成功した場合、0以外の値が返却されます。
失敗した場合、0が返却されます。
実装例
CString str = _T("ABCDE"); int len = str.GetLength(); SIZE size; ZeroMemory(&size, sizeof(SIZE)); GetTextExtentPoint32(hdc, str, len, &size); printf("幅=%d 高さ=%d\n", size.cx, size.cy);
3. おわりに
印刷処理で、文字列を描画する位置決めの際に使用しました。
元にしたVB6のアプリでは、印刷する文字列も図形も描画位置を絶対値で指定していました。
この方法だとプリンタが変わったりすると位置がずれるため、そのたびにプログラムの修正が必要なります。
そのため今回は描画する文字列から描画位置を決めるようにしました。

Win32API完璧マスタ―Visual C++プログラミング
- 作者: 土井滋貴,上田悦子,那須靖弘
- 出版社/メーカー: CQ出版
- 発売日: 2001/02
- メディア: 単行本
- 購入: 5人 クリック: 28回
- この商品を含むブログ (11件) を見る
紹介している一部の記事のコードはGitlabで公開しています。
興味のある方は覗いてみてください。
私が勤務しているニューラルでは、主に組み込み系ソフトの開発を行っております。
弊社製品のハイブリッドOS Bi-OSは高い技術力を評価されており、特に制御系や通信系を得意としています。
私自身はiOSモバイルアプリやウィンドウズアプリを得意としております。
ソフトウェア開発に関して相談などございましたら、お気軽にご連絡ください。
また一緒に働きたい技術者の方も随時募集中です。
興味がありましたらご連絡ください。
EMAIL : info-nr@newral.co.jp / m-futamata@newral.co.jp
TEL : 042-523-3663
FAX : 042-540-1688