マクロ名を画面に描画

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

マクロ名を画面に描画

#1

投稿記事 by 小太郎 » 14年前

#defineで定義した名前を、文字列として画面に描画することは可能でしょうか?

キーコンフィグ画面を作ろうと思っているのですが、下の様な形にしたいです。
①矢印を上下で動かし、Enterで指定すると入力待ちに。
②何かキーを押すとそのキーのマクロ名が表示される。

  UP    KEY_INPUT_UP
> DOUN  _
  LEFT KEY_INPUT_LEFT
  RIGHT KEY_INPUT_RIGHT

ですがそのマクロ名の表示をどうしていいのか分かりません・・・

小太郎

Re: マクロ名を画面に描画

#2

投稿記事 by 小太郎 » 14年前

忘れていましたが、
VC++2008、DXライブラリとC言語でプログラムを組もうと思っています。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: マクロ名を画面に描画

#3

投稿記事 by beatle » 14年前

コード:

DrawString(0, 0, "KEY_INPUT_UP", GetColor(255, 255, 255));
という感じでどうでしょうか。

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

Re: マクロ名を画面に描画

#4

投稿記事 by YuO » 14年前

マクロ名自体はコンパイル時に消えるので,そのままではマクロ名を使うことは出来ません。

なので,マクロ名を表示しようとするならば,

コード:

struct MacroNames
{
    int value;
    const char * name;
};
const MacroNames[] macroNames =
{
#define VAL(v) { (v), #v }
VAL(KEY_INPUT_UP),
VAL(KEY_INPUT_LEFT),
/* ... */
#undef VAL
};
のような対応表を用意して,探索をかける必要があります。

小太郎

Re: マクロ名を画面に描画

#5

投稿記事 by 小太郎 » 14年前

YuO さんが書きました:マクロ名自体はコンパイル時に消えるので,そのままではマクロ名を使うことは出来ません。

なので,マクロ名を表示しようとするならば,

コード:

struct MacroNames
{
    int value;
    const char * name;
};
const MacroNames[] macroNames =
{
#define VAL(v) { (v), #v }
VAL(KEY_INPUT_UP),
VAL(KEY_INPUT_LEFT),
/* ... */
#undef VAL
};
のような対応表を用意して,探索をかける必要があります。
なるほど、そんなに難しいことになるんですね・・・
ちなみに検索をかけたとして、表示する方法の例を教えて頂けますでしょうか?

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: マクロ名を画面に描画

#6

投稿記事 by beatle » 14年前

検索と表示のアルゴリズム
  • key_codeにKYE_INPUT_UPやKEY_INPUT_LEFTが代入されているとする。
  • macroNames.value == key_codeとなるiを求める。
  • macroNames.nameを何らかの文字列表示用関数で表示する

そんなに難しいアルゴリズムではないと思いますが、わからないところがあったら言ってください。

小太郎

Re: マクロ名を画面に描画

#7

投稿記事 by 小太郎 » 14年前

beatle さんが書きました:検索と表示のアルゴリズム
  • key_codeにKYE_INPUT_UPやKEY_INPUT_LEFTが代入されているとする。
  • macroNames.value == key_codeとなるiを求める。
  • macroNames.nameを何らかの文字列表示用関数で表示する

そんなに難しいアルゴリズムではないと思いますが、わからないところがあったら言ってください。


理解できました!
お二人方とも、ありがとうございます!

閉鎖

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