ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 23:10

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 
作成者 メッセージ
 記事の件名: 教えてください
投稿記事Posted: 2005年11月23日(水) 11:21 
 電卓風に、数字の貼り付けてあるボタンを押したら、スタティックウインドウに表示されるモジュールを作りたいのですが、記述の方法が分かりません。
 ウィンドウにボタンが1つ、スタティックウィンドウが1つ貼り付けてあります。ウインドウの識別名がCalcで、ウィンドウハンドルがhCalc、ボタンのIDがCommandButton1、スタティックウィンドウのIDがStatic1とします。ボタンが押されたら変数kosuに数字が入り、kosuの内容がスタティックウインドウに表示されるようにしたいのですが。Calc_CommandButton1_Click()にはどのように記述すればいいのでしょうか?
 以下のように記述しましたが、エラーこそ出ないもののスタティックウインドウには何も表示されません。

Dim kosu As Long
Dim hStatic1 As HWND

Sub Calc_CommandButton1_Click() '"1"を押したとき
hStatic1 = GetDlgItem(hCalc,Static1)
kosu = kosu*10 + 1 
SendMessage(hStatic1,WM_SETTEXT, 0, kosu)
End Sub


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月23日(水) 12:07 
オフライン

登録日時: 2005年5月31日(火) 18:51
記事: 473
お住まい: 新潟県
数値を文字列に直す必要があります。
ABのヘルプに載っているStr$()関数とSetWindowText()関数をご覧下さい。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2005年11月23日(水) 14:05 
 ありがとうございました。ABのヘルプも見ましたがいまいちよく分かりません。以下のような記述をすればよかったのでしょうか?
Dim kosu As Long
Dim kosu$ As String
Dim hStatic1 As HWND

Sub Calc_CommandButton1_Click() '"1"を押したとき
hStatic1 = GetDlgItem(hCalc,Static1)
kosu = kosu*10 + 1
kosu$ = Str$(kosu)
SendMessage(hStatic1,WM_SETTEXT, 0, kosu$)
End Sub

 やってみたら、型が違いますとメッセージが出ます。どこがいけないのでしょうか?


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月23日(水) 14:54 
一般のBASICを考えると文字列の扱いが面倒ですよね。
STRING型の構造とBytePtr型と要求される実引数の型などを適当なHPで
調べる必要があります。

ここの下段リンクの「OriosのActiveBasic講座」に多少解説があります。

コード:
Dim kosu As Long
Dim hStatic1 As HWND
Dim Buf As string 'BytePtr calloc() lstrcpy()
    hStatic1 = GetDlgItem(hCalc,Static1) 'ORG = hMainWnd
    kosu = kosu*10 + 1
    Buf = Str$(kosu)
    SendMessage(hStatic1,WM_SETTEXT, 0,StrPtr(Buf))


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月23日(水) 15:30 
 やってみました。できました!ありがとうございました。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2005年11月23日(水) 18:48 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
もう終わったようですけど,ちなみにABのヘルプに記載はありませんが,
SetDlgItemIntというまさに今回やろうとしていることを行ってくれる関数があります。
それを使うとこうなります。
コード:
Sub Calc_CommandButton1_Click()      '"1"を押したとき
    kosu = kosu*10 + 1
    SetDlgItemInt(hCalc, Static1, kosu, TRUE) ' 最後のTRUEはこの数値が符号付きであることを伝えています。
End Sub

Declare Function SetDlgItemInt Lib "User32.dll" (hDlg As HWND, idDlgItem As Long, Value As DWord, isSigned As Long) As Long


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 6 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: Amazon [Bot], Bing [Bot], Semrush [Bot] & ゲスト[17人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean