15,978
社区成员
发帖
与我相关
我的任务
分享
void CTestDlg::ReInitBkgnd()
{
if(m_hdcMemory){
// 重新分配内存DC进行绘制,并刷新
::DeleteDC(m_hdcMemory);
Invalidate();
// 绘制内存位图
HDC hdcTemp = GetDC()->m_hDC;
m_hdcMemory = CreateCompatibleDC(hdcTemp);
HBITMAP hBitMap = CreateCompatibleBitmap(hdcTemp, 500, 500);
SelectObject(m_hdcMemory, hBitMap);
::DeleteObject(hBitMap);
::DeleteDC(hdcTemp);
}
// 再次使用GDI+载入PNG图片
HDC hdcScreen = ::GetDC(m_hWnd);
RECT rct;
GetWindowRect(&rct);
POINT ptWinPos = {rct.left, rct.top};
Graphics graph(m_hdcMemory); //GDI+中的类
Image image(L"bk.png",TRUE); //GDI+中的类
int wndWidth = rct.right-rct.left;
int wndHeight = rct.bottom-rct.top;
graph.DrawImage(&image, 0,0, wndWidth,wndHeight);
// 使用UpdateLayerWindow进行窗口透明处理
HMODULE hFuncInst = ::LoadLibrary(_T("User32.DLL"));
typedef BOOL (WINAPI *MYFUNC)(HWND, HDC, POINT*, SIZE*, HDC, POINT*, COLORREF, BLENDFUNCTION*, DWORD);
MYFUNC UpdateLayeredWindow;
UpdateLayeredWindow = (MYFUNC)GetProcAddress(hFuncInst, _T("UpdateLayeredWindow"));
SIZE sizeWindow= {wndWidth, wndHeight};
POINT ptSrc = {0,0};
UpdateLayeredWindow( m_hWnd, hdcScreen, &ptWinPos, &sizeWindow, m_hdcMemory, &ptSrc, 0, &m_Blend, 2);
GetWindowRect(&m_oldRect); //记录窗体初始化大小的位置
::ReleaseDC(m_hWnd, hdcScreen);
::DeleteDC(hdcScreen);
::FreeLibrary(hFuncInst);
}
void CTestDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
CRect oldRect;
GetClientRect(&oldRect);
if(GetCapture()==this)
{
if(m_bLDown&& m_bDrag)
{
GetWindowRect(&m_oldRect);
BringWindowToTop();
ReleaseCapture();
m_bLDown = FALSE;
m_bDrag = FALSE;
return;
}
if(m_bLDown&& !m_bDrag)
{
……
ReleaseCapture();
m_bLDown = FALSE;
m_bDrag = FALSE;
ReInitBkgnd();
for(int i=0; i<9; ++i){
m_bArea[i]=false;
}
}
}
CDialog::OnLButtonUp(nFlags, point);
}
//-------------------------------------------------------------
// 以下为划分思路标准
//|----|--------------------------------|----|
//|_1__|_____________2__________________|_3__|
//| | | |
//| | | |
//| 4 | 可拖拉区域 | 5 |
//| | | |
//|____|________________________________|____|
//| 6 | 7 | 8 |
//|----|--------------------------------|----|
//-------------------------------------------------------------