掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MDIの子ウインドウに描画するには? (ID:55446)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
なーめさんレスありがとうございます。 遅くなってすいません。 独立したデータを保持ということを調べていたのですが、 参考になりそうなものが見つからなかったため再度よろしくお願いします。 長くなるかもしれませんがソースの一部を乗せておきます。 hBufferとhBitmapがグローバル変数でその他はローカル変数です。 /************************************************* * * フレームウインドウの処理 * **************************************************/ case WM_CREATE: ccsClient.hWindowMenu = GetSubMenu(GetMenu(hWnd) , 1); ccsClient.idFirstChild = ID_CHILDWND; hClient = CreateWindow("MDICLIENT" , NULL , WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE , 0 , 0 , 0 , 0 , hWnd , (HMENU)1 , hIns ,&ccsClient ); break; case WM_COMMAND: switch(LOWORD(wParam)) { case ID_MNU_new: hChild = CreateMDIWindow(MDI_CHILD , szFile , 0 , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , hClient , hIns , 0 ); GetClientRect(hChild,&win); hdc = GetDC(hChild); hBitmap = CreateCompatibleBitmap(hdc,win.right,win.bottom); hBuffer = CreateCompatibleDC(hdc); SelectObject(hBuffer,hBitmap); PatBlt(hBuffer , 0 , 0 ,win.right,win.bottom, WHITENESS); ReleaseDC(hChild,hdc); break; } /********************************************* * * クライアントウインドウの処理 * **********************************************/ switch(uMsg){ case WM_CREATE: hClient = GetParent(hWnd); hFrame = GetParent(hClient); break; case WM_LBUTTONDOWN: click = true; rc.left = LOWORD(lParam); rc.top = HIWORD(lParam); SetCapture(hWnd); break; case WM_LBUTTONUP: hChild = (HWND)SendMessage(hClient , WM_MDIGETACTIVE , 0 , 0); if(click){ click = false; rc.right = LOWORD(lParam); rc.bottom = HIWORD(lParam); InvalidateRect(hChild , NULL ,true); ReleaseCapture(); } break; case WM_MOUSEMOVE: hChild = (HWND)SendMessage(hClient , WM_MDIGETACTIVE , 0 , 0); if(click){ hdc = BeginPaint(hChild,&ps); rc.right = rc.left; rc.bottom = rc.top; rc.left = LOWORD(lParam); rc.top = HIWORD(lParam); if(rc.left>5000){ rc.left -= 65536; } if(rc.top>5000){ rc.top -= 65536; } SetPixel(hBuffer,rc.left,rc.top,RGB(0,0,0)); MoveToEx(hBuffer,rc.left,rc.top,NULL); LineTo(hBuffer,rc.right,rc.bottom); InvalidateRect(hChild , NULL , false); EndPaint(hChild,&ps); } break; case WM_PAINT: hChild = (HWND)SendMessage(hClient, WM_MDIGETACTIVE , 0 , 0); GetClientRect(hChild,&win); hdc = BeginPaint(hChild,&ps); BitBlt(hdc,0,0,win.right,win.bottom,hBuffer,0,0,SRCCOPY); EndPaint(hChild,&ps); break; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.