我给对话框重绘窗体加载位图后,为何窗体不可拖动!运行后固定在那!程序如下!
//自绘标题栏
void CFMXL1Dlg::DrawTitleBar(CDC *pDC)
{
if (m_hWnd)
{

//准备画XP风格按钮
CPoint point;
CBitmap* pBitmap = new CBitmap;
CBitmap* pOldBitmap;
CDC* pDisplayMemDC=new CDC;
BOOL bActive=FALSE;
        // 创建显示用设备环境
pDisplayMemDC->CreateCompatibleDC(pDC);
CRect rtWnd, rtTitle, rtButtons;
// 得到当前窗口区域
GetWindowRect(&rtWnd);  // 若当前活动窗口为本例程窗口,bActive=TRUE;
if(::GetActiveWindow()==m_hWnd)
   bActive=TRUE;

//取得标题栏的位置
rtTitle.left = GetSystemMetrics(SM_CXFRAME);
rtTitle.top = GetSystemMetrics(SM_CYFRAME);
rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME)-3;
rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE); //填充顶部框架
point.x = rtWnd.Width();
point.y = GetSystemMetrics(SM_CYSIZE) + GetSystemMetrics(SM_CYFRAME)+1;
if(bActive)
        pBitmap->LoadBitmap(IDB_TITLEBARIN);
else
pBitmap->LoadBitmap(IDB_TITLEBAROUT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(0,0,point.x, point.y, pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
pBitmap->DeleteObject();     //填充左侧框架
point.x = GetSystemMetrics(SM_CXFRAME)+1;
point.y = rtWnd.Height();
if(bActive)
        pBitmap->LoadBitmap(IDB_LEFTIN);
else
pBitmap->LoadBitmap(IDB_LEFTOUT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(0,23,point.x, point.y, pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
pBitmap->DeleteObject(); //填充底部框架
point.x = rtWnd.Width(); 
point.y = GetSystemMetrics(SM_CYFRAME)+1;
if(bActive)
        pBitmap->LoadBitmap(IDB_BOTTOMIN);
else
pBitmap->LoadBitmap(IDB_BOTTOMOUT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(0,rtWnd.Height()-point.y,point.x, point.y, pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
pBitmap->DeleteObject();

//填充右侧框架
point.x = GetSystemMetrics(SM_CXFRAME)+1;
point.y = rtWnd.Height();
if(bActive)
        pBitmap->LoadBitmap(IDB_RIGHTIN);
else
pBitmap->LoadBitmap(IDB_RIGHTOUT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(rtWnd.Width()-point.x,23,point.x, point.y, pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
pBitmap->DeleteObject(); //重画标题栏程序图标
m_rtIcon.left = rtTitle.left + 3;
m_rtIcon.top = GetSystemMetrics(SM_CYFRAME)-2;
m_rtIcon.right = m_rtIcon.left + 19;
m_rtIcon.bottom = m_rtIcon.top + 19;
::DrawIconEx(pDC->m_hDC, m_rtIcon.left, m_rtIcon.top, AfxGetApp()->LoadIcon(IDR_COM), 
  m_rtIcon.Width(), m_rtIcon.Height(), 0, NULL, DI_NORMAL);
m_rtIcon.OffsetRect(rtWnd.TopLeft());  //重画标题栏程序标题
int nOldMode = pDC->SetBkMode(TRANSPARENT);
COLORREF clOldText=pDC->SetTextColor(RGB(255, 255, 255));
pDC->SelectStockObject(SYSTEM_FIXED_FONT);
rtTitle.left = rtTitle.left+30; 
rtTitle.top = GetSystemMetrics(SM_CYFRAME);
rtTitle.bottom = rtTitle.top + 22;
CString m_strTitle;
GetWindowText(m_strTitle);
m_strTitle=_T("串口通讯调试器");
pDC->DrawText(m_strTitle, &rtTitle, DT_LEFT);
pDC->SetBkMode(nOldMode);
pDC->SetTextColor(clOldText); //重画关闭按钮
rtButtons.left = rtTitle.right - 19;
rtButtons.top = rtTitle.top-2;
rtButtons.right = rtButtons.left + 19;
rtButtons.bottom = rtButtons.top + 19;
pBitmap->LoadBitmap(IDB_CLOSEOUT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
m_rtButtExit = rtButtons;
m_rtButtExit.OffsetRect(rtWnd.TopLeft()); 
pBitmap->DeleteObject();
//重画最小化按钮
rtButtons.right = rtButtons.left - 3;
rtButtons.left = rtButtons.right - 19;
pBitmap->LoadBitmap(IDB_MINOUT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
m_rtButtMin = rtButtons;
m_rtButtMin.OffsetRect(rtWnd.TopLeft());
pBitmap->DeleteObject();

//重画帮助按钮
rtButtons.right = rtButtons.left - 3;
rtButtons.left = rtButtons.right - 19;
pBitmap->LoadBitmap(IDB_HELPOUT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
m_rtButtHelp = rtButtons;
m_rtButtHelp.OffsetRect(rtWnd.TopLeft());
pBitmap->DeleteObject();

// 释放资源
ReleaseDC(pDisplayMemDC);
ReleaseDC(pDC);
delete pDisplayMemDC;
delete pBitmap;
}
}//消息处理
LRESULT CFMXL1Dlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
LRESULT lrst=CDialog::DefWindowProc(message, wParam, lParam);

if (!::IsWindow(m_hWnd))
return lrst; if (message==WM_MOVE||message==WM_PAINT||message==WM_NCPAINT||message==WM_NCACTIVATE ||message == WM_NOTIFY)
//if (message==WM_ACTIVATEAPP||message==WM_ACTIVATE||message == WM_SYSCOMMAND||message == WM_MOVE || message == WM_NCPAINT ||message == WM_NCACTIVATE )
{
CDC* pWinDC = GetWindowDC();
if (pWinDC)
DrawTitleBar(pWinDC); // 当有上述消息时,绘制标题栏
ReleaseDC(pWinDC);
}
return lrst;
}