コンボボックス内の内容を決めるには、どうやればいいですか?
それで、その内容を指定しておいて、エディットボックスに出力するには、どうすればいいですか?
こんなのできるのかな?
返信お願いします。
コンボボックス
ありがとうございます
7さん、返信ありがとうございます。
さて、またまたいろんなものが引っかかります。
といっても、一つ”lParam”が引っかかります。
何か、定義し忘れているんでしょうか?
このコードでおかしいことが合ったら、返信お願いします。
さて、またまたいろんなものが引っかかります。
といっても、一つ”lParam”が引っかかります。
何か、定義し忘れているんでしょうか?
このコードでおかしいことが合ったら、返信お願いします。
[ここをクリックすると内容が表示されます]
コード: 全て選択
Sub Mission_ComboBox1_ADDSTRING()
Dim E As Long
Dim D As Long
Dim C As Long
Dim C+ As Long
Dim B As Long
Dim B+ As Long
Dim A As Long
Dim A+ As Long
Dim S As Long
Dim S+ As Long
E ="E"
D ="D"
C ="C"
C+ ="C"
B ="B"
B+ ="B+"
A ="A"
A+ ="A+"
S ="S"
S+ ="--"
E= lParam
D= lParam
C= lParam
C+= lParam
B= lParam
B+= lParam
A= lParam
A+= lParam
S= lParam
S+= lParam
End Sub
えーと、勘違いされているようです...。
CB_ADDSTRINGはウィンドウメッセージなので、SendMessage()関数を使って目的のウィンドウにメッセージを送る必要があります。
CB_ADDSTRINGはウィンドウメッセージなので、SendMessage()関数を使って目的のウィンドウにメッセージを送る必要があります。
[ここをクリックすると内容が表示されます]
コード: 全て選択
Dim hCombo As HWND
hCombo=GetDlgItem(hMainWnd,ComboBox1)
SendMessage(hCombo,CB_ADDSTRING,NULL,"文字列")
'コンボボックスに文字列を追加する関数を作ると楽。
Function cb_addString(ByVal hWnd As HWND,ByVal lpString As BytePtr) As LRESULT
cb_addString=SendMessage(hWnd,CB_ADDSTRING,NULL,lpString As LPARAM)
End Function
cb_addString(hCombo,"文字列")
>
いっぱいあるんだけど、どうしたらいいかなー?
このまま、デバックしてみたら、ちゃんとコマンドボックスに入ってなかったし・・・
[ここをクリックすると内容が表示されます]
文字列のほうには、認識(内容の文字)をかくんですか?コード: 全て選択
Dim hCombo As HWND
>
> hCombo=GetDlgItem(hMainWnd,ComboBox1)
> SendMessage(hCombo,CB_ADDSTRING,NULL,"文字列")
>
> 'コンボボックスに文字列を追加する関数を作ると楽。
> Function cb_addString(ByVal hWnd As HWND,ByVal lpString As BytePtr) As LRESULT
> cb_addString=SendMessage(hWnd,CB_ADDSTRING,NULL,lpString As LPARAM)
> End Function
>
> cb_addString(hCombo,"文字列")
いっぱいあるんだけど、どうしたらいいかなー?
このまま、デバックしてみたら、ちゃんとコマンドボックスに入ってなかったし・・・
> 文字列のほうには、認識(内容の文字)をかくんですか?
そうです。文字列リテラルでも構いませんし、文字列変数でも構いません。
> いっぱいあるんだけど、どうしたらいいかなー?
どのぐらいの文字数なのか分かりませんが、あまりにも多い文字列はコンボボックスに表示すべきじゃないと思いますよ。
使用目的が分からないので強制はしませんが...。
> このまま、デバックしてみたら、ちゃんとコマンドボックスに入ってなかったし・・・
コンボボックスに文字列を追加するタイミングは正しいですか?
大抵はウィンドウが作られた時にコンボボックスに文字列を追加します。
そうです。文字列リテラルでも構いませんし、文字列変数でも構いません。
コード: 全て選択
SendMessage(hCombo,CB_ADDSTRING,NULL,"文字列リテラル")
SendMessage(hCombo,CB_ADDSTRING,NULL,pStr)'文字列変数
どのぐらいの文字数なのか分かりませんが、あまりにも多い文字列はコンボボックスに表示すべきじゃないと思いますよ。
使用目的が分からないので強制はしませんが...。
> このまま、デバックしてみたら、ちゃんとコマンドボックスに入ってなかったし・・・
コンボボックスに文字列を追加するタイミングは正しいですか?
大抵はウィンドウが作られた時にコンボボックスに文字列を追加します。
[ここをクリックすると内容が表示されます]
また、コンボボックスの初期の選択位置は-1のようなので、プログラム起動時に0に設定してやると良いかもしれません。コード: 全て選択
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
Dim hCombo As HWND
hCombo=GetDlgItem(hMainWnd,ComboBox1)
cb_addString(hCombo,"罪と罰")
'0を選択
SendMessage(hCombo,CB_SETCURSEL,0,NULL)
End Sub