子ウィンドウへの描画

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 子ウィンドウへの描画

by かっぽれ » 2008年5月24日(土) 17:39

枠無しなので表示しているのかどうか分からないだけでした……。
すいません。

by 田中 宏 » 2008年5月22日(木) 11:07

SetParent(hCambusWnd,hMainWnd)を
ShowWindow(hCambusWnd,SW_SHOW)に変更してみてください。子ウィンドウをアクティブにします。
ShowWindow 関数(API)のヘルプを見てください。ウィンドウの表示状態を指定できます。

子ウィンドウへの描画

by かっぽれ » 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
ちなみに描画領域ウィンドウのプロパティは以下の通りです。
・背景:白
・スタイル:チャイルド、枠無し、可視
・タイプ:通常ウィンドウ

ページトップ