我可以在cview中找到.为什么在cdialog中找不到呢。郁闷。谁来帮个忙!!!

解决方案 »

  1.   

    我想给一个cdialog加上一个背景图片.但是我在cdialog这个类中不到WM_ERASEBKGND这个消息.那我应该怎么做呢
      

  2.   

    其实还是有这个消息的,class wizard中选择消息时左下角有个filter,把它改成window就可以了,慢慢找找
      

  3.   

    我没有用这个消息.我用的是这个方法解决的饿
    void CMy454Dlg::OnPaint() 
    {
    if (IsIconic())
    {
    CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon
    dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
    CDialog::OnPaint();
    }     CClientDC dc(this);  CDC comdc;
     comdc.CreateCompatibleDC(&dc);
     comdc.SelectObject(&bitmap);
         CRect rect;
     GetClientRect(&rect);  dc.BitBlt(0,0,rect.Width(),rect.Height(),&comdc,0,0,SRCCOPY);
    }
      

  4.   

    嘎嘎。找到了。解决了
    BOOL CMy454Dlg::OnEraseBkgnd(CDC* pDC) 
    {
    // TODO: Add your message handler code here and/or call default
    CClientDC dc(this);     bitmap.LoadBitmap(IDB_BITMAP1);
     CDC comdc;
     comdc.CreateCompatibleDC(&dc);
     comdc.SelectObject(&bitmap);
         CRect rect;
     GetClientRect(&rect);  dc.BitBlt(0,0,rect.Width(),rect.Height(),&comdc,0,0,SRCCOPY);
    return true;
    // return CDialog::OnEraseBkgnd(pDC);
    }
      

  5.   

    以上2中方法哪个比较好.OnEraseBkgnd是cwn类在创建的时候先擦除背景.然后在从新绘制,
    WM_PAINT是在cwn类创建的时候发送的消息.感觉2个貌似是一样的。谁给你解释下他们的区别!!!