子ウィンドウへの描画
Posted: 2008年5月18日(日) 13:42
何度もすみません、かっぽれです。
現在簡単なお絵描きソフトを作っているのですが、
ボタンとかをつけるために描画領域と他のところを分けてから、
マウスをドラッグしても何も描かれなくなりました(分ける前は描けました)。
というか描画領域が表示すらしません。
コードは以下の通りです。
描画領域じゃないほう
描画領域
ちなみに描画領域ウィンドウのプロパティは以下の通りです。
・背景:白
・スタイル:チャイルド、枠無し、可視
・タイプ:通常ウィンドウ
現在簡単なお絵描きソフトを作っているのですが、
ボタンとかをつけるために描画領域と他のところを分けてから、
マウスをドラッグしても何も描かれなくなりました(分ける前は描けました)。
というか描画領域が表示すらしません。
コードは以下の通りです。
描画領域じゃないほう
コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Dim hPen As HPEN
Dim hBrush As HBRUSH
Dim hDC As HDC
Dim paint As Long
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
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()
Penmanshiper_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_IDM_pencil_MenuClick()
hPen=CreatePen(PS_SOLID,pixel,RGB(0,0,0))
hBrush=CreateSolidBrush(RGB(0,0,0))
SelectObject(hDC,hPen)
SelectObject(hDC,hBrush)
End Sub
Sub MainWnd_IDM_eraser_MenuClick()
hPen=CreatePen(PS_SOLID,pixel,RGB(255,255,255))
hBrush=CreateSolidBrush(RGB(255,255,255))
SelectObject(hDC,hPen)
SelectObject(hDC,hBrush)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
SetParent(hCambusWnd,hMainWnd)
End Sub
コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [CambusWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hCambusWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function CambusWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
' イベントプロシージャの呼び出しを行います。
CambusWndProc=EventCall_CambusWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub CambusWnd_Create(ByRef CreateStruct As CREATESTRUCT)
hDC=GetDC(hCambusWnd)
hPen=CreatePen(PS_SOLID,2,RGB(0,0,0))
hBrush=CreateSolidBrush(RGB(0,0,0))
SelectObject(hDC,hPen)
SelectObject(hDC,hBrush)
End Sub
Sub MainWnd_LButtonDown(flags As Long, x As Integer, y As Integer)
paint=1
MoveToEx(hDC,x,y,ByVal NULL)
End Sub
Sub MainWnd_LButtonUp(flags As Long, x As Integer, y As Integer)
DeleteObject(hPen)
DeleteObject(hBrush)
paint=0
End Sub
Sub MainWnd_MouseMove(flags As Long, x As Integer, y As Integer)
If paint=1 Then
LineTo(hDC,x,y)
End If
End Sub
・背景:白
・スタイル:チャイルド、枠無し、可視
・タイプ:通常ウィンドウ