by まっ » 2008年2月24日(日) 00:24
返信ありがとうございました。
はぁぁぁぁぁ~。ようやく。。。
ようやく解決しました。ホントにありがとうございました。
それにしても、最初は簡単に考えてましたが、この1つの事にこんなに日を取られるとは思ってもいませんでした。他に回避方法がなかったので、返信がなかったら、と思うとただただ感謝です。
以下は、同じ問題を抱えている、または抱えるかもしれない人に向けて。です。
pj を新規作成した状態から、:::::::: の行を追加したら、色が変更できました。
:::::::: の文字はあってもなくてもいいと思いますが、消したほうが確かです。
Callback.wbp は勝手に再構築される、という事になってるようですが、個人的にあまり信用していないので、ウマくいかない時はテキストエディタなどで見直してみてください。
test7.wnd ----------------------------------------------------------------------
WINDOW:MainWnd
HANDLE = hMainWnd
POINT = -2147483648,-2147483648
SIZE = 480,360
CAPTION = "test7"
STYLE = &H10cf0000
EXSTYLE = &H00000000
ID = 0
BGCOLOR = 15
FONT = -12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック"
CLASS = "NORMAL"
CALLBACK = MainWndProc
TYPE = 0
FILEPATH = MainWnd.sbp
::::::::ITEM = Static1,103,85,101,22,"Text1",&H50000000,&H00000000,11
::::::::ITEM = CommandButton1,51,136,54,35,"Button1",&H50000000,&H00000000,1
END
MainWnd.sbp --------------------------------------------------------------------
' イベント プロシージャ
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
::::::::Dim rgb As DWord
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
::::::::Select Case dwMsg
:::::::: Case WM_CTLCOLORSTATIC
:::::::: If lParam=GetDlgItem(hMainWnd,Static1) Then
:::::::: SetTextColor(wParam As HDC,rgb)
:::::::: SetBkMode(wParam As HDC,TRANSPARENT)
:::::::: MainWndProc=GetSysColorBrush(COLOR_3DFACE)
:::::::: Exit Function
:::::::: End If
::::::::End Select
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
test7_DestroyObjects()
PostQuitMessage(0)
End Sub
::::::::Sub MainWnd_CommandButton1_Click()
:::::::: rgb=RGB(255,0,0)
:::::::: InvalidateRect(GetDlgItem(hMainWnd,Static1),ByVal NULL,TRUE)
::::::::End Sub
Callback.wbp -------------------------------------------------------------------
'このファイルはウィンドウ定義ファイル(*.wnd)をもとに生成されています
::::::::Const Static1=1000
::::::::Const CommandButton1=1001
Dim hMainWnd As HWND
Dim hFont_MainWnd As HFONT
hFont_MainWnd=CreateFont(-12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック")
Dim h3DFaceBrush As HBRUSH
h3DFaceBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE))
Sub test7_DestroyObjects()
DeleteObject(hFont_MainWnd)
DeleteObject(h3DFaceBrush)
End Sub
Function EventCall_MainWnd(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Select Case message
Case WM_DESTROY
MainWnd_Destroy()
Case WM_CREATE
hMainWnd=hWnd
:::::::: CreateWindowEx(&H00000000,"STATIC","Text1",&H50000000,103,85,101,22,hWnd,Static1 As HMENU,GetModuleHandle(0),0)
:::::::: SendMessage(GetDlgItem(hWnd,Static1),WM_SETFONT,hFont_MainWnd As WPARAM,0)
:::::::: CreateWindowEx(&H00000000,"BUTTON","Button1",&H50000000,51,136,54,35,hWnd,CommandButton1 As HMENU,GetModuleHandle(0),0)
:::::::: SendMessage(GetDlgItem(hWnd,CommandButton1),WM_SETFONT,hFont_MainWnd As WPARAM,0)
Case WM_CLOSE
Dim cancel=0 As Integer
If cancel=0 Then DestroyWindow(hWnd)
:::::::: Case WM_COMMAND
:::::::: Select Case LOWORD(wParam)
:::::::: Case CommandButton1
:::::::: Select Case HIWORD(wParam)
:::::::: Case BN_CLICKED
:::::::: MainWnd_CommandButton1_Click()
:::::::: End Select
:::::::: End Select
Case Else
EventCall_MainWnd=DefWindowProc(hWnd,message,wParam,lParam)
Exit Function
End Select
EventCall_MainWnd=0
End Function
以下略
--------------------------------------------------------------------------------
返信ありがとうございました。
はぁぁぁぁぁ~。ようやく。。。
ようやく解決しました。ホントにありがとうございました。
それにしても、最初は簡単に考えてましたが、この1つの事にこんなに日を取られるとは思ってもいませんでした。他に回避方法がなかったので、返信がなかったら、と思うとただただ感謝です。
以下は、同じ問題を抱えている、または抱えるかもしれない人に向けて。です。
pj を新規作成した状態から、:::::::: の行を追加したら、色が変更できました。
:::::::: の文字はあってもなくてもいいと思いますが、消したほうが確かです。
Callback.wbp は勝手に再構築される、という事になってるようですが、個人的にあまり信用していないので、ウマくいかない時はテキストエディタなどで見直してみてください。
test7.wnd ----------------------------------------------------------------------
WINDOW:MainWnd
HANDLE = hMainWnd
POINT = -2147483648,-2147483648
SIZE = 480,360
CAPTION = "test7"
STYLE = &H10cf0000
EXSTYLE = &H00000000
ID = 0
BGCOLOR = 15
FONT = -12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック"
CLASS = "NORMAL"
CALLBACK = MainWndProc
TYPE = 0
FILEPATH = MainWnd.sbp
::::::::ITEM = Static1,103,85,101,22,"Text1",&H50000000,&H00000000,11
::::::::ITEM = CommandButton1,51,136,54,35,"Button1",&H50000000,&H00000000,1
END
MainWnd.sbp --------------------------------------------------------------------
' イベント プロシージャ
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
::::::::Dim rgb As DWord
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
::::::::Select Case dwMsg
:::::::: Case WM_CTLCOLORSTATIC
:::::::: If lParam=GetDlgItem(hMainWnd,Static1) Then
:::::::: SetTextColor(wParam As HDC,rgb)
:::::::: SetBkMode(wParam As HDC,TRANSPARENT)
:::::::: MainWndProc=GetSysColorBrush(COLOR_3DFACE)
:::::::: Exit Function
:::::::: End If
::::::::End Select
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
test7_DestroyObjects()
PostQuitMessage(0)
End Sub
::::::::Sub MainWnd_CommandButton1_Click()
:::::::: rgb=RGB(255,0,0)
:::::::: InvalidateRect(GetDlgItem(hMainWnd,Static1),ByVal NULL,TRUE)
::::::::End Sub
Callback.wbp -------------------------------------------------------------------
'このファイルはウィンドウ定義ファイル(*.wnd)をもとに生成されています
::::::::Const Static1=1000
::::::::Const CommandButton1=1001
Dim hMainWnd As HWND
Dim hFont_MainWnd As HFONT
hFont_MainWnd=CreateFont(-12,0,0,0,400,0,0,0,128,3,2,1,32,"MS Pゴシック")
Dim h3DFaceBrush As HBRUSH
h3DFaceBrush=CreateSolidBrush(GetSysColor(COLOR_3DFACE))
Sub test7_DestroyObjects()
DeleteObject(hFont_MainWnd)
DeleteObject(h3DFaceBrush)
End Sub
Function EventCall_MainWnd(hWnd As HWND, message As DWord, wParam As WPARAM, lParam As LPARAM) As LRESULT
Select Case message
Case WM_DESTROY
MainWnd_Destroy()
Case WM_CREATE
hMainWnd=hWnd
:::::::: CreateWindowEx(&H00000000,"STATIC","Text1",&H50000000,103,85,101,22,hWnd,Static1 As HMENU,GetModuleHandle(0),0)
:::::::: SendMessage(GetDlgItem(hWnd,Static1),WM_SETFONT,hFont_MainWnd As WPARAM,0)
:::::::: CreateWindowEx(&H00000000,"BUTTON","Button1",&H50000000,51,136,54,35,hWnd,CommandButton1 As HMENU,GetModuleHandle(0),0)
:::::::: SendMessage(GetDlgItem(hWnd,CommandButton1),WM_SETFONT,hFont_MainWnd As WPARAM,0)
Case WM_CLOSE
Dim cancel=0 As Integer
If cancel=0 Then DestroyWindow(hWnd)
:::::::: Case WM_COMMAND
:::::::: Select Case LOWORD(wParam)
:::::::: Case CommandButton1
:::::::: Select Case HIWORD(wParam)
:::::::: Case BN_CLICKED
:::::::: MainWnd_CommandButton1_Click()
:::::::: End Select
:::::::: End Select
Case Else
EventCall_MainWnd=DefWindowProc(hWnd,message,wParam,lParam)
Exit Function
End Select
EventCall_MainWnd=0
End Function
以下略
--------------------------------------------------------------------------------