自分のお店を開く時の心構えとは? >>

C++初心者です。
ご教授よろしくお願いします。

Visual Basic C++ において、
label,button などのプロパティ設定を行う際、
this->label3->Name = L"label3"
といった固定値での設定ではなく、変数で設定を行いたいと考えています。

イメージはこのような感じです。
this->label$i->Name = L"label$i"

最終的には、for文で回して、以下のような設定をしたいと考えています。
for(i=1;i<=3;i++){
this->label$i->Name = L"label$i";
}

おおよそ以上のようなことをしたいのですが、
実際にどういったコードを記述すればよいかわかりません。

どなたかご教授よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

No1 です


他の方の回答通知が来て改めて内容見たときに気が付いたのですが
代入するコントロールの方も違ってたのね   見落としてました

クラスウイザードの標準操作ではメンバ変数に配列を使うことはできないはずなので
自分で手を加えて細工することになります

手っ取り早くやるならそのコントロールを
ポインタ等の配列に代入して使うのがいいでしょう

以下 不足してた部分の雑なサンプル

Labei *LabekPtr[3]; //変数の型は 実際のコントロールのものに合わせてください

LabekPtr[0] = this->labe1;
LabekPtr[1] = this->labe2;
LabekPtr[2] = this->labe3;

for(int i = 0; i < 3 ; i ++) {
 LabekPtr[i]->Name =
}
    • good
    • 0

> Visual Basic C++ において、



なるほど(w)ネタです。
私のほうが、VC++ではなく、C++のプログラマなので、多少用語が違うのは気にせず~

this->label3->Name = L"label3"
"Name"は実体を持っているワークでしょうか?それで多少変わる感じがありますね。
上の書き方は、Nameはポインター型で(const char *)"label3";
的な書式なので、
だとすれば、、
No1さんのやつが、一番近いですね。

元の、プロトタイプを
this->label1
this->label2
this->label3
ではなく、
this->label[n] で定義すれば、相当楽になると思いますよ。

char buffer[100];

for(i=1;i<=3;i++) {
 sprintf(buffer,"label%d",i);
 this->label[i].Name = strdup(buffer); // 実体の場合
 this->label[i]->Name = strdup(buffer); // 参照構造体の場合
}
strdupは、
char *p;
p=malloc(strlen(buffer)+1); // \0 の分を追加。
strcpy(p,buffer);
return(p);
と等価の関数です。
実体を生成させるために書いています。
これがないと、初期化されていないポインターへの直コピー=一般保護例外が出るはずです。
    • good
    • 0

this->label1->Name = L"label1"


this->label2->Name = L"label2"
this->label3->Name = L"label3"
ということですよね。
基本、C言語では(スクリプト言語で採用されているような) label$i とか L"label$i" で変数iを展開する、といったことはできない、とお考えください。
(そもそも、$変数名 などという使い方自体しません)

・文字列はsprintf等の文字列変換関数を使って作る
・コントロールは、配列に入れて labels[i]等とする
    • good
    • 0

一例として


確認してないんで間違ってるかも(流れはわかると思います)

TCHAR buffrt[100];

for(i=1;i<=3;i++){
 sprintf(buffer, L"Labev%d", i);
 this->label$i->Name = buffer; //個人的には SetWindowText 使う気がするけど
}

みたいな感じでいいかと
SetWindowText
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QLabelコントロールに数字を代入する

開発環境はMicrofoft visual stdio 2005 で開発言語はC#を使い、Windousアプリケーションでプログラミングしているのですが
LabelにInt型の変数の中身を代入する方法がわかりません。
ソースコードで書くと
int a = 10;
label1.Text = a;//こうするとInt型をString型に変換できませんと
        //で る
参考書などには数字を表示したいならTextBoxを使いなさいとよく書かれているのですが、今のプログラムはユーザーに数字の表示を変えられるといけないので、悩んでいます。
どなたかLabelにInt型を入れる方法か、ユーザーがコントロールできないようなLabelに代わるものを教えていただけないでしょうか><
よろしくお願いします。

Aベストアンサー

int→stringはToStringメソッドでできます。

label1.Text = a.ToString();

(参考)逆はint.Parseメソッド(かint.TryParse)またはConvert.ToInt32あたりでできます。

Q矢印(左右)キーでイベントを発生させたい。

いつもお世話になっております。
VB初心者です。ご理解のほど宜しくお願い致します。
データベースの入力画面でリストボックス1と2を二つ並べてあります。マウスクリックで選択できるのですが、操作性を良くする意味でキーボード入力にも対応させたいと思っております。
標準で矢印の↑←は上に移動します。↓→は下に移動します。
現状は[ESC]キーでリスト1と2を切り替えていますが操作性がとても悪いです。やはり←→キーでフォーカスを移動させたいです。
e.KeyChar = Chr(Keys.Left)
などとやってはみたのですが、受け付けてくれません。
ちなみにセレクト位置を移動させたリストボックスに反映させています。フォーカスを失ったリストボックスは再生成させてセレクトを消しています。
ご教授頂きたく宜しくお願いいたします。

Aベストアンサー

KeyDown等では矢印ボタンなどのイベントはあがってきません。

参考になさってみてください、解決すると思います。
http://dobon.net/vb/dotnet/control/btndetectarraykey.html


人気Q&Aランキング

おすすめ情報