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

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

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

#1 投稿記事 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
では取得できませんでした。どのようにすれば良いでしょうか。
ゲスト

訂正です。

#2 投稿記事 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
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#3 投稿記事 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
ゲスト

#4 投稿記事 by ゲスト »

BoxStrを、数値として扱う場合はどのようにすれば良いのでしょうか。

コード: 全て選択

BoxStr=Val(BoxStr)
BoxStr=2*BoxStr
BoxStr=Str$(BoxStr)
では駄目でした。
あと、Sub hMainWnd... で、hは要りませんでしたね。失礼しました。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

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

GetDlgItemInt関数を使えば直接数値として受け取ることができます。
過去ログを検索すれば幾つか例も見つかります。

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