|
@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文で回せたらよいなぁと考えた次第です。 何卒宜しくお願い致します。 |
|
@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 なのか 判断ができません。何を書けばよいかがわからない、というのは 理解できますが、その場合は調べた情報を全て書いて下さい。 |
|
最近うちに届いたメール。 From: * <*@mti.biglobe.ne.jp> Date: Sat, 2 Sep 2000 00:24:57 +0900 (内容なし) From: * <*@da.mbn.or.jp> Date: Wed, 6 Sep 2000 21:24:05 +0900 (内容なし) From: * <*@calltoweb.com> Date: Fri, 8 Sep 2000 12:43:55 +0900 (内容なし) From: *@themis.dricas.com Date: Sat, 9 Sep 2000 12:49:08 +0900 (JST) (内容なし) From: * <*@d7.dion.ne.jp> Date: Sun, 10 Sep 2000 09:11:30 +0900 Subject: あの ホームページみました。何とかしてください。 From: * <*@f7.dion.ne.jp> Date: Sun, 10 Sep 2000 10:29:26 +0900 届きました? From: *@nifty.ne.jp Date: Tue, 12 Sep 2000 00:05:51 +0900 (JST) このホームページはどうなっているんですか? From: *@aol.com Date: Tue, 12 Sep 2000 09:44:30 EDT Subject: エラー表示ありとでました。 和議申請について 和議申請とは この人たちにはコミュニケーション能力というものがないのだろうか。 好意的に解釈すると、「SEGA BBS 過去ログが見れません」 と言いたいのかとも思うのだが、本当にそうなのか。 うちにイタズラメールを送ろうという活動でもやっているのでは ないか。あるいは、どこかの web をクリックするとここにメールが 送られてくるような仕組みになっているのではないか、とも思えてくる。 謎である。真実を知っている人がいたら教えてください。 |
|
@68user様 素早いお返事ありがとうございます。 >むむ? 前のソースではそこらへんをやっておられたと思いましたが…。 たしか前のではすべてのlabelに対してXtVaCreateManagedWidget()やXtAddEventHandler()などをやっていたと思います。(^^; >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, ...); >} snprintfというのが使ったことがないので明日調べて 試させていただきます。 ありがとうございました。 |
|
質問の仕方がうまくなくて、ごめんなさい。 これからもっと磨いていきますので、 よろしくお願いいたします。 初心者にはココに質問するのはちょっと高度なことなのでしょうか。 とかちょっと思ってしまった。 なにか超初心者向けのページがあったらご紹介ください。 ご迷惑おかけしました。 というわけで今日も本を読むばかりです。 コンピュータって難しい・・・ 聞く人もいないのがホントにつらいところです。 |
|
> 質問の仕方がうまくなくて、ごめんなさい。 というところにさらに説教くさいことを書くのもアレですが、 回答をもらったときに「理解できたかどうか」「解決したか どうか」をちゃんと書くことも重要です。 「ありがとう」と、お礼のみを書かれてもこっちは何も得る ものがないわけですが、 「〜が理解できた/できなかった」 「〜と〜の関係がわからない」 「言われた通りにやってみたら〜というトラブルが出たが、 〜とすることで解決できた」 という返答が得られると、回答者が「こういう解説の仕方で 相手に理解させることができた」「この部分で嘘を言ってしまった」 「わかりにくい表現をしてしまった」などということに気づく ことができます。 で、みちこさんは apache の件も bash の件も、解決したのか、 理解できたのか、を書いておられません。これでは回答した 僕には何のメリットもありません。 要は「お礼よりも結果報告」です。 これは初心者向けのコミュニティでも上級者向けのコミュニティでも 同じですので、今後は注意されることをお勧めします。 > なにか超初心者向けのページがあったらご紹介ください。 逆に、fj やメーリングリストなど、ここよりもずっとレベルの 高いところに行くのもいいでしょう。しばらく読み続ければ、 「よい質問の仕方とはどういうものなのか」がわかってくると 思います。 > @68user様 ところで、「様」はご勘弁を>gongo さん |