原因についてはコードを見てみないとよくわかりません。が、似たような現象は何度も経験した覚えがあります。その詳細は忘れましたが。。。
試しに前回のボタンの状態を復元するサンプルを作ってみました。はずしていたらレスしてください。
1.ツールバーコントロールに tbrButtonGroup スタイルのボタンを3つ配置します。
2.メニューエディタで適当な親メニューを作成し、その下層として 'mnuTest' という同じ名前のメニューを3つ作成します。3つのメニューには1から3のインデックスを付けておきます。キャプションは 'A'、'B'、'C' とでもしておきます。
3.プロジェクトを適当な場所に保存してから実行します。
Option Explicit
Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
Private Sub Form_Load()
mnuTest_Click GetPrivateProfileInt("Settings", "test", 1, App.Path & "\test.ini")
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim i As Long
For i = mnuTest.LBound To mnuTest.UBound
If mnuTest(i).Checked Then Exit For
Next
WritePrivateProfileString "Settings", "test", CStr(i), App.Path & "\test.ini"
End Sub
Private Sub mnuTest_Click(Index As Integer)
If Not Toolbar1.Buttons(Index).Value = tbrPressed Then
test Index
Toolbar1.Buttons(Index).Value = tbrPressed
End If
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
test Button.Index
End Sub
Private Sub test(Index As Integer)
Dim i As Long
For i = mnuTest.LBound To mnuTest.UBound
mnuTest(i).Checked = i = Index
Next
'ボタンの変更による処理が必要であればこれ以降に記述します
End Sub
お礼
2度も回答ありがとうございます。 今度はうまくいきました。 これで何とかなりそうです。助かりました。 ありがとうございました。