教えてください

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 教えてください

by イグトランス » 2005年11月23日(水) 18:48

もう終わったようですけど,ちなみに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

by ゲスト » 2005年11月23日(水) 15:30

 やってみました。できました!ありがとうございました。

by Uhsp » 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))

by ゲスト » 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

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

by 7 » 2005年11月23日(水) 12:07

数値を文字列に直す必要があります。
ABのヘルプに載っているStr$()関数とSetWindowText()関数をご覧下さい。

教えてください

by ゲスト » 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

ページトップ