ページ 1 / 1
ツールバーでアクセス違反
Posted: 2012年2月07日(火) 15:55
by 水波形
お世話になっております。
今回、テキストエディタのようなものを作っていて、そこにツールバーをつけようと思っているのですが、なぜかアクセス違反が出てしまします。
http://www.activebasic.com/help_center/ ... index.html
を参考にしているのですが、なぜか動きません……
エラーを起こして表示されるのは、RADツールが自動で作成してくれる場所で、DestroyObjects()の部分の「End Sub」でした。(Callback.sbp)
デバグを繰り返しているうちに
コード: 全て選択
hToolbar=CreateToolbarEx(hMainWnd,WS_CHILD or WS_VISIBLE,ID_TOOLBAR,4,GetModuleHandle(0),IDB_BITMAP1,tbb,5,0,0,16,15,Len(tbb[0]))
でエラーが出てるというところまではわかったのですが、そこから先がわかりません。
ビットマップを次の章(
http://www.activebasic.com/help_center/ ... index.html)のモノクロのものに差し替えると動いたりします。
今やりたい事は、フラットツールバーで、最初からモノクロではなくカラーのツールバーを表示させ、オンマウスでカラーのツールバーの浮き出しをしたいのです。
まとめると、
カラーのツールバー→オンマウス→カラーのツールバー(オンマウスした部分が浮き出る)
質問が曖昧(貧困なボキャブラリーのせいですが……)で申し訳ないですが、
お分かりの方がいらっしゃいましたらご教示ください。
よろしくおねがいします。
Re: ツールバーでアクセス違反
Posted: 2012年2月07日(火) 22:13
by たかせ
こちらでも確認したいけど水波形さんが作成したテキストエディタのソースコードをみないと実験できません。
ちなみに水波形さんが確認したのPC環境はWindows 7/HOME SP1 X64ですよね?
またABのバージョンは4.24ですよね?
おうふ
Posted: 2012年2月07日(火) 22:50
by 水波形
あ~……
すいません、完全にぼけていました……
Win 7 64bit
HOME
です。
AB4.24.00を使ってます。
コードの抜き出し。
と言っても、上のサンプルページのコピ&ペーストですが
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
#include <api_commctrl.sbp>
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Const ID_TOOLBAR = 70 'ツールバーのID
Const ID_STATUS = 71 'ステータスバーのID
Dim hToolbar As DWord 'ツールバーのハンドル
Dim hImageList As DWord 'イメージリストのハンドル
Dim hStatus As DWord 'ステータスバーのハンドル
Type NONCLIENTMETRICS
cbSize As Long ' 構造体のサイズ
iBorderWidth As Long ' 境界線の太さ
iScrollWidth As Long ' 縦スクロールバーの幅
iScrollHeight As Long ' 横スクロールバーの高さ
iCaptionWidth As Long 'キャプションのボタンの幅
iCaptionHeight As Long ' キャプションのボタンの高さ
lfCaptionFont As LOGFONT ' キャプションが使用するフォント
iSmCaptionWidth As Long ' ツールバーのキャプションのボタンの幅
iSmCaptionHeight As Long ' ツールバーのキャプションのボタンの高さ
lfSmCaptionFont As LOGFONT ' ツールバーのキャプションで使用するフォント
iMenuWidth As Long ' メニューバーのボタンの幅
iMenuHeight As Long ' メニューバーのボタンの高さ
lfMenuFont As LOGFONT ' メニューが使用するフォント
lfStatusFont As LOGFONT ' ステータスバーとチップヘルプが使用するフォント
lfMessageFont As LOGFONT ' メッセージボックスが使用するフォント
End Type
Sub SetTbButtonData(ByRef ptb As TBBUTTON, iBitmap As Long, idCommand As Long, fsState As Byte, fsStyle As Byte)
With ptb
.iBitmap=iBitmap
.idCommand=idCommand
.fsState=fsState
.fsStyle=fsStyle
.dwData=0
.iString=0
End With
End Sub
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
'イメージリストを破棄
ImageList_Destroy(hImageList)
test_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
'ツールバー設定
Dim ic As INITCOMMONCONTROLSEX
Dim tbb[4] As TBBUTTON
Dim style As Long
'コモンコントロールの初期化
ic.dwSize=Len(ic)
ic.dwICC=ICC_BAR_CLASSES
InitCommonControlsEx(ic)
'ボタン情報をセット
SetTbButtonData(tbb[0],0,IDM_NEW,TBSTATE_ENABLED,TBSTYLE_BUTTON)
SetTbButtonData(tbb[1],1,IDM_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON)
SetTbButtonData(tbb[2],2,IDM_SAVE,TBSTATE_ENABLED,TBSTYLE_BUTTON)
SetTbButtonData(tbb[3],0,0,TBSTATE_ENABLED,TBSTYLE_SEP)
SetTbButtonData(tbb[4],3,IDM_ABOUT,TBSTATE_ENABLED,TBSTYLE_BUTTON)
'ツールバーを生成
hToolbar=CreateToolbarEx(hMainWnd,WS_CHILD or WS_VISIBLE,ID_TOOLBAR,4,GetModuleHandle(0),IDB_BITMAP1,tbb,5,0,0,16,15,Len(tbb[0]))
End Sub
Re: おうふ
Posted: 2012年2月07日(火) 23:15
by たかせ
私のPCでは問題なく動作しました
PC環境はWindows 7/HOME SP1 X86
X64だと何か問題あるのでしょうか?
申し訳ありませんがX64のPCもっていないので確認できません。
X64であればできれば念のためVer05CP5でコンパイルして動作確認してみてください。
よろしくお願いします
AB5で
Posted: 2012年2月08日(水) 13:03
by 水波形
X64であればできれば念のためVer05CP5でコンパイルして動作確認してみてください。
よろしくお願いします
AB5で実行してみました。
エラーは出ませんでしたが、真っ黒な四角で表示されてしまい、何が何かわからない状態に……
カラービットマップがダメなのでしょうか……?
……そんなこと無いですよね……
Re: AB5で
Posted: 2012年2月08日(水) 13:29
by たかせ
AB5で確認しました。
X86では問題ありませんでした。
バグ報告に起票してはいかがでしょうか?
> AB5で実行してみました。
> エラーは出ませんでしたが、真っ黒な四角で表示されてしまい、何が何かわからない状態に……
> カラービットマップがダメなのでしょうか……?
> ……そんなこと無いですよね……
Posted: 2012年2月10日(金) 00:36
by 水波形
AB5で確認しました。
X86では問題ありませんでした。
バグ報告に起票してはいかがでしょうか?
そうですね~
したほうがいいかもしれません。
AB5使って無いからなんとも言えませんが……
AB4で使えないのは辛い