68user's page 掲示板

Prev< No. 1161〜1162> Next  [最新発言に戻る] [過去ログ一覧]
No. 1161 # gongo [E-mail] 2000/09/12 (火) 20:36:48
@68user様
どうも、gongoです。

X関連(というよりもC言語かもしれませんが)で質問があります。

label = XtVaCreateManagedWidget(name,・・・)

と書けば、labelというウィジェットを生成できますが
複数個のウィジェットを生成したい場合
for文などでこの文章を繰り返して生成することは可能でしょうか。

例えばlabel00,label01,label02,・・・、そしてname00,name01,name02,・・・
などのように変化させていくつもりで

unsigned char labelname[]="label00"
unsigned char widgetname[]="name00"

といったように最初のlabel00とname00をchar型の配列に入れて
for文で回るたびに数値のところだけを書き直すといったことを
やろうとしたのですが、どうもうまくいきませんでした。

for(i=0; i<NUM; i++){
labelname = XtVaCreateWidget(widgetname,・・・);
labelとnameの数字をカウントアップする;
}

といった感じでウィジェットを生成できれば簡単なのに・・・と思ったのですが
やはり個々に宣言しないとまずいのでしょうか。
labelnameのところは本来Widget型じゃないといけないからうまくいかない
のでしょうか。widgetnameのところは本来String型ですがこちらもよくわかりません。

また、同様にイベント処理でイベントハンドラを用いる時も
for文で回すことは可能でしょうか。

つまりは以前見て頂いたプログラムのようにlabelをいくつも用意し、
それぞれの窓にButtonPressをイベントハンドラとして登録するという一連の文を
書くと結構大変ですし、後々窓の個数を変える時のことを考えると
for文で回せたらよいなぁと考えた次第です。

何卒宜しくお願い致します。

No. 1162 # 68user 2000/09/12 (火) 22:45:18
@gongo さん
> label = XtVaCreateManagedWidget(name,・・・)
むむ? 前のソースではそこらへんをやっておられたと思いましたが…。
    Widget label[10];
    char name[256];
    for( i=0; i<sizeof(label)/sizeof(label[0]) ; i++ ){
        snprintf(name, sizeof(name), "name%02d", i);
        label[i] = XtVaCreateWidget(name, ...);
    }
ではダメですか?

> 最初のlabel00とname00をchar型の配列に入れて for文で
> 回るたびに数値のところだけを書き直すといったこと
はできません。C 言語では、変数名や関数名などのシンボルを
動的に生成することはできないからです。
# …という表現は正しいかな?

> unsigned char labelname[]="label00"
> labelname = XtVaCreateWidget(widgetname,・・・);
また、「labelname の*内容*」と「メモリ領域」には何の関係も
ないので、XtVaCreateWidget の戻り値を格納する領域がどこにも
ない、ということになります。


@みちこさん
> これはunixシェルが使えるということなのでしょうか。
一言で言えば、
    「~/.bash* がある、ということだけでは何とも言えない」
です。相手側に telnet サーバが上がっているか、IP アドレスにより
telnet の接続元を限定していないか、パスワードエントリが適切に
設定されているか、ログインシェルが適切に設定されているか、
などを全てクリアすればログインできるでしょう。

逆に言うと、プロバイダが客にリモートログインさせないように
するには、たくさんの方法があるということ。その情報がない
以上、ログインできるとも できないとも判断できません。

> ちなみに、binディレクトリ内には何もありません。
> (これはcgiが使えないということ?)
bin と CGI には関係はありません。

あと、質問の仕方がいまいちですね。例えば、「binディレクトリ」
というのは、/bin なのか、ホームディレクトリの bin なのか
判断ができません。何を書けばよいかがわからない、というのは
理解できますが、その場合は調べた情報を全て書いて下さい。

Prev< No. 1161〜1162> Next  [最新発言に戻る] [過去ログ一覧]