コンボボックス

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
雷電

コンボボックス

#1 投稿記事 by 雷電 »

コンボボックス内の内容を決めるには、どうやればいいですか?
それで、その内容を指定しておいて、エディットボックスに出力するには、どうすればいいですか?
こんなのできるのかな?
返信お願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#2 投稿記事 by 7 »

コンボボックスの内容を決める(追加ですが)には、CB_ADDSTRING。

1.CB_GETCURSELでどの内容が指定されているか知る。
2. 1.の戻り値を使って、CB_GETLBTEXTLENで文字列長を取得。
3. 2.の戻り値を使って、文字列変数にメモリをZeroString()関数やmalloc()関数で確保する。
4. 1.の戻り値を使って、CB_GETLBTEXTで3.の文字列変数に文字列を格納。
5.エディットボックスに3.の文字列変数を設定する。
雷電

ありがとうございます

#3 投稿記事 by 雷電 »

7さん、返信ありがとうございます。
さて、またまたいろんなものが引っかかります。
といっても、一つ”lParam”が引っかかります。
何か、定義し忘れているんでしょうか?
このコードでおかしいことが合ったら、返信お願いします。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#4 投稿記事 by 7 »

えーと、勘違いされているようです...。

CB_ADDSTRINGはウィンドウメッセージなので、SendMessage()関数を使って目的のウィンドウにメッセージを送る必要があります。
ゲスト

#5 投稿記事 by ゲスト »

> 文字列のほうには、認識(内容の文字)をかくんですか?
いっぱいあるんだけど、どうしたらいいかなー?
このまま、デバックしてみたら、ちゃんとコマンドボックスに入ってなかったし・・・
雷電

名前

#6 投稿記事 by 雷電 »

忘れてました、名前を入れるのを。。
7
記事: 473
登録日時: 2005年5月31日(火) 18:51
お住まい: 新潟県
連絡する:

#7 投稿記事 by 7 »

> 文字列のほうには、認識(内容の文字)をかくんですか?
そうです。文字列リテラルでも構いませんし、文字列変数でも構いません。

コード: 全て選択

SendMessage(hCombo,CB_ADDSTRING,NULL,"文字列リテラル")
SendMessage(hCombo,CB_ADDSTRING,NULL,pStr)'文字列変数
> いっぱいあるんだけど、どうしたらいいかなー?
どのぐらいの文字数なのか分かりませんが、あまりにも多い文字列はコンボボックスに表示すべきじゃないと思いますよ。
使用目的が分からないので強制はしませんが...。

> このまま、デバックしてみたら、ちゃんとコマンドボックスに入ってなかったし・・・
コンボボックスに文字列を追加するタイミングは正しいですか?
大抵はウィンドウが作られた時にコンボボックスに文字列を追加します。 また、コンボボックスの初期の選択位置は-1のようなので、プログラム起動時に0に設定してやると良いかもしれません。
雷電

ついで

#8 投稿記事 by 雷電 »

ボタンのクリックと同時に、また別のウィンドウが出てくるようにするには、どうやればよいでしょうか?
コードごと書いてください
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#9 投稿記事 by イグトランス »

ついでと言わないで,それなら新たにトピックを作ってしまいましょうよ。

それはともかく,ボタンがクリックされるとクリックイベントが発生します。
クリックイベントは(ウィンドウ名)_(ボタンのID)_Clickという関数(たとえばMainWnd_CommandButton1_Clickなどという具合)が対応しています。

そのクリックイベントの中で別のウィンドウを作ればよいのです。
普通はダイアログを作っておいて,DialogBox或いはCreateDialog関数を呼ぶことになるでしょう。
返信する