TabbedTextOut()関数のタブ設定について

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

TabbedTextOut()関数のタブ設定について

#1

投稿記事 by ふりかけ » 14年前

Win32 API関数の勉強をしています。
TabbedTextOut()関数の仮引数 LPINT lpnTabStopPositions にはint配列(値は昇順)へのポインタを渡すことになっています。
通常の8文字幅のタブ以外に設定できるようですが。配列をどう使うのか分かりません。
いくつか適当な値を試してみたのですが、妙な位置で区切られているように思います。回答お願いします。

ふりかけ

Re: TabbedTextOut()関数のタブ設定について

#2

投稿記事 by ふりかけ » 14年前

Win32 API の質問は不適切でしたか
ほとんど使われないパラメータらしいので、気持ちは悪いけど諦めます。失礼しました。

YuO
記事: 947
登録日時: 15年前
住所: 東京都世田谷区

Re: TabbedTextOut()関数のタブ設定について

#3

投稿記事 by YuO » 14年前

解決となっていますが……。
  • 配列の要素数が1個の場合は,その倍数がタブストップ位置
  • 配列の要素数が2個以上の場合は,その位置がタブストップ位置
となります。
タブストップ位置なので,タブ文字があると,次のタブストップ位置まで描画位置が進みます。

コード:

int lpnTabStopPositions[] = { 60 };
を使った場合,60ピクセルごと (60, 120, 180, 240, ...) にタブストップが設定されます。

コード:

int lpnTabStopPositions[] = { 60, 150 };
を使った場合,60ピクセルの位置と150ピクセルの位置にタブストップが設定されます。
# それを超えた場合,定義されていないようです。

ふりかけ

Re: TabbedTextOut()関数のタブ設定について

#4

投稿記事 by ふりかけ » 14年前

なるほど、配列要素が2個以上だと定義されていないので妙な挙動だったんですね。
てっきり60, 150, 60, 150...
となるのを期待してたのですが、それは1個の時だけの特例なんですね。

YuOさんありがとうございました。

閉鎖

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