RT:
向导式属性页在贴背景图的时候为什么四周有一部分没有填充满呢,哪位高手解答一下。见图,如果看不见可以到我空间中看。
12.jpg

解决方案 »

  1.   

    去除dlg 的 WS_BORDER (即thin 改为 none)
      

  2.   

    我资源有,可以下载看下效果,感觉有2个DLG 一个是sheet的 还有一个是Dialog
      

  3.   

    我用vc6。
    下面3句:
    // CImage cImg;
    // HRESULT retBk = cImg.Load(_T("Resources\\TurboMode\\1.jpg")); //wuziqi.png是我要加载的图片名称,包含路径
    // cImg.Draw(pDC->m_hDC, 0, 0,800 , 470);
    我改成bmp,没发现问题。
    你不妨也改成bmp。
    显示1.jpg,屏幕复制,‘绘图’,存为bmp
      

  4.   

    707159146 加我QQ 具体QQ说 谢谢了
      

  5.   

    我没QQBOOL CLineWizardPage::OnEraseBkgnd(CDC* pDC)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CDC dcMem;
    dcMem.CreateCompatibleDC(pDC);//DeleteDC needed
    CBitmap* pOldBitmap = dcMem.SelectObject(&m_bitmap);
    // Retrieve the size of our bitmap...
    BITMAP bmp;
    m_bitmap.GetObject(sizeof(bmp),&bmp);
    // and the size of our window's client area
    CRect rect;
    GetClientRect(&rect);
    pDC->BitBlt(rect.left, rect.top,rect.Width(), rect.Height(),&dcMem,0, 0,SRCCOPY);
    //, bmp.bmWidth, bmp.bmHeight
    dcMem.SelectObject(pOldBitmap);
    dcMem.DeleteDC(); 
    // CImage cImg;
    // HRESULT retBk = cImg.Load(_T("Resources\\TurboMode\\1.jpg")); //wuziqi.png是我要加载的图片名称,包含路径
    // cImg.Draw(pDC->m_hDC, 0, 0,800 , 470);
    return TRUE;

    // return CPropertyPage::OnEraseBkgnd(pDC);
    }
      

  6.   

    不知道指的什么。是class CWizardSheet : public CPropertySheet
    的矩形大于page吗?
      

  7.   

    BITMAP bmp;
    m_bitmap.GetBitmap(&bmp); CBitmap* pOldBitmap = dcMem.SelectObject(&m_bitmap);
    pDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcMem, 0, 0, SRCCOPY);  
    dcImage.SelectObject(pOldBitmap);你也可以用这个函数pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);来使画面填充满你的属性页。
      

  8.   

    page中 下部按钮上面 有一条线,你指的是线上空的部分?
      

  9.   

    CPropertySheet 就是这样的,暂时没法。
      

  10.   

    给你找了办法:
    void CLineWizardPage::OnSize(UINT nType, int cx, int cy) 
    {
    CPropertyPage::OnSize(nType, cx, cy);

    // TODO: Add your message handler code here
    CRect rc;
    GetClientRect(&rc);
    rc.InflateRect(20,20);
    MoveWindow(&rc);

    }
      

  11.   

    CLineWizardPage是一个页面类(从CPropertyPage派生),只是CWizardSheet(从CPropertySheet派生)的一个子窗口,所以得在CWizardSheet上面画,
    在CWizardSheet的Onpaint()函数里面添加如下代码
    {
            CBitmap bitmap;
    bitmap.LoadBitmap(IDB_BITMAP1);
    CBrush brush(&bitmap); //
    CPen pen(PS_NULL,1,RGB(255,255,0));//这里创建一个空笔,去掉画出来的线边框
            CRect rect;
    GetClientRect(&rect);
    CPaintDC dc(this);//系统默认定义的一个dc,从CDC派生出来的,正好用得上
    CBrush * pBrush = dc.SelectObject(&brush);
    CPen * pPen = dc.SelectObject(&pen); dc.Rectangle(&rect);//画背景 dc.SelectObject(pBrush);
    dc.SelectObject(pPen);
    }
    这样背景就是全景了,看了一下效果,这里会发现,静态标签文字后有灰色的小背景不好看,
    可以添加CWizardSheet的WM_CTLCOLOR消息,再根据 nCtlColor的类型来指定子控件相关属性,
      

  12.   

    我又试了试,应该放在 OnSetActive 中
    CRect rc;
    GetClientRect(&rc);
    rc.InflateRect(11,11);// 调整
    MoveWindow(&rc);
    // 这样sheet本身 是没背景的,只是page有背景。
      

  13.   

    谢谢大家的支持,可以用19楼的方法。尽量使用jpg格式的图片,这样程序不会太大。