エディトボックスの内容を変更したときに処理されるように、
MainWnd_InputEditBox_Change()という関数で処理しています。
で、MainWnd_Create()内で
InputEditBoxの値を初期化するためにSetDlgItemText()を呼んでいるのですが、どうやら2度呼ばれているようです。
つまり、InputEditBoxが作成された際にWM_SETTEXTが呼ばれている為だと思うのですが、
これをやめさせる良い方法はありますか?
消極的な方法ですと、フラグ変数を使って一回目は無視するという方法もありますが、
それだとエディトボックスの数分必要になりますし…
エディトボックスの内容の変更の通知について
とりあえず解決しました。
といっても2度も呼ばれるのは気持ち悪いし何が起こるか分からないので、
Callback.wbpを書き換えようと思いましたが、
RADを使うと書き換えられてしまうので、メインウィンドウで作ってしまうことにしました。
ここで、InputEditBoxに設定する値はDefaultIndexとなっていますが、
iniファイルがあればファイルから読み込んだ値が使われます。
Callback.wbpを書き換えようと思いましたが、
RADを使うと書き換えられてしまうので、メインウィンドウで作ってしまうことにしました。
コード: 全て選択
Dim DefaultIndex=0 As Long ' 最初に読み込むファイル番号
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
' アップダウンコントロールを作成(0-100)
CreateUpDownControl(1342177430,258,25,20,38,hMainWnd,"UpDown", _
GetWindowLong(hMainWnd,GWL_HINSTANCE) As HINSTANCE, _
GetDlgItem(hMainWnd, InputEditBox),0,100,0)
' デフォルトの番号を設定
SetDlgItemText(hMainWnd, InputEditBox, Str$(DefaultIndex))
End Sub
iniファイルがあればファイルから読み込んだ値が使われます。