出力する文字の幅を知りたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
dic

出力する文字の幅を知りたい

#1

投稿記事 by dic » 14年前

下のソースのようにウィンドウに文字列stringを出力しているのですが
このときの出力する文字列stringの幅をどうやって計算して出すのでしょうか?
おおよそ一文字20ビットと計算してましたが、結構文字列が長くなると誤差が生じているので
結構計算がズレてしまいます

フォント指定などあるのかもしれないですが、あまりよくわかってないので
どのようにして出力される文字列stringの長さを求めるのでしょうか?
HDC    hdc;
    h = pBack->GetDC(&hdc);
    if( h != DD_OK ) {
        ddErr_(h);
        return;
    }
    TextOut( hdc, x, y, string, strlen(string) );

    pBack->ReleaseDC(hdc);

みけCAT

Re:出力する文字の幅を知りたい

#2

投稿記事 by みけCAT » 14年前

GetTextExtentPoint32() APIを使います。
HDC    hdc;
SIZE strsize;
h = pBack->GetDC(&hdc);
if( h != DD_OK ) {
    ddErr_(h);
    return;
}
GetTextExtentPoint32(hdc,string,lstrlen(string),&strsize);//求める
//デバッグ用
MoveToEx(hdc,x,y,NULL);
LineTo(hdc,x+strsize.cx,y);
LineTo(hdc,x+strsize.cx,y+strsize.cy);
LineTo(hdc,x,y+strsize.cy);
LineTo(hdc,x,y);
SetBkMode(hdc,TRANSPARENT);
//デバッグ用終わり
TextOut( hdc, x, y, string, strlen(string));
pBack->ReleaseDC(hdc);
補足
この場合strsize.cxに文字列の幅が、strsize.cyに文字列の高さが格納されます。
参考サイト
http://wisdom.sakura.ne.jp/system/winap ... in133.html
下のリンクはGoogle検索です。
http://bit.ly/c4oAUS 画像

dic

Re:出力する文字の幅を知りたい

#3

投稿記事 by dic » 14年前

>>みけCATさん
解決しました
ありがとうございました

参考サイトは知っていたのですが、見落としてました
画像

閉鎖

“C言語何でも質問掲示板” へ戻る