ページ 11

エディトボックスの内容の取得方法

Posted: 2006年4月30日(日) 03:31
by ゲスト
ボタンをクリックでエディトボックスの内容をダイアログで表示したいのですが、

コード: 全て選択


    Sub Main_CommandButton1_Click()
        Dim Num As DWord
        Dim BoxStr As Long
        Num=SendMessage(GetDlgItem(hMainWnd,EditBox1),WM_GETTEXTLENGTH,0,0)
        SendMessage(GetDlgItem(hMainWnd,EditBox1),WM_GETTEXT,Num,BoxStr)
        MsgBox hMainWnd,BoxStr,"内容"
    End Sub
では取得できませんでした。どのようにすれば良いでしょうか。

訂正です。

Posted: 2006年4月30日(日) 03:35
by ゲスト

コード: 全て選択

    Sub hMainWnd_CommandButton1_Click()
        Dim Num As DWord
        Dim BoxStr As Long
        Num=SendMessage(GetDlgItem(hMainWnd,EditBox1),WM_GETTEXTLENGTH,0,0)
        SendMessage(GetDlgItem(hMainWnd,EditBox1),WM_GETTEXT,Num,BoxStr)
        MsgBox hMainWnd,BoxStr,"内容"
    End Sub

Posted: 2006年4月30日(日) 12:41
by イグトランス
BoxStrがLong型なのが最大の原因です。
文字列を扱う型にして、SendMessageではそれをLong型にキャストして使います。
しかもBoxStrにはNumの文字数分のメモリを確保する必要があります。

というのは面倒なんでこれ使ってください。
http://www.activebasic.com/forum/viewtopic.php?t=432
こうなります。

コード: 全て選択

Sub hMainWnd_CommandButton1_Click()
    Dim BoxStr As String
    GetDlgItemTextStr(hMainWnd, EditBox1, BoxStr)
    MsgBox hMainWnd, BoxStr, "内容" 
End Sub

Posted: 2006年5月01日(月) 22:56
by ゲスト
BoxStrを、数値として扱う場合はどのようにすれば良いのでしょうか。

コード: 全て選択

BoxStr=Val(BoxStr)
BoxStr=2*BoxStr
BoxStr=Str$(BoxStr)
では駄目でした。
あと、Sub hMainWnd... で、hは要りませんでしたね。失礼しました。

Posted: 2006年5月02日(火) 00:09
by イグトランス
GetDlgItemInt関数を使えば直接数値として受け取ることができます。
過去ログを検索すれば幾つか例も見つかります。

或いはString型のBoxStrに対してVal関数を呼ぶと言う方法もありますが。