急!CPropertyPage里杂加背景位图,让周围没有边缘,全部覆盖

时间:2021-02-09 09:20:43
RT,我加的时候老是有边缘,不能全部覆盖对话框,想了一上午了都没解决,哪位高手指点下

8 个解决方案

#1


我想你一定是在CPropertyPage里的对话框上设置背景图的,那样当然覆盖不到CPropertyPage控件了.
你需要在CPropertyPage对象里设置了, 你可以重载CPropertyPage类,也可以通过截获CPropertyPage对象的消息来处理.

#2


引用 1 楼 wwgddx 的回复:
我想你一定是在CPropertyPage里的对话框上设置背景图的,那样当然覆盖不到CPropertyPage控件了.
你需要在CPropertyPage对象里设置了, 你可以重载CPropertyPage类,也可以通过截获CPropertyPage对象的消息来处理.

我就是在CPropertyPage对象里设置的,设置完后,显示出来位图不能靠近左边和上边,有框框,风格也设了this->m_psp.dwFlags|= PSH_NOAPPLYNOW;
不知道什么原因?期待解决!

#3


可能刚才没有描述清楚,通俗说如下:
我在属性页加入一张图片,不过显示的时候图片跟属性页边框有一段距离,如何叫图片跟属性页边框紧贴着 
有高手知道吗?

#4


把你的代码贴出来!

#5


引用 4 楼 fandh 的回复:
把你的代码贴出来!

// Page.cpp : implementation file
//

#include "stdafx.h"
#include "test.h"
#include "Page.h"
#include "Sheet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPage property page

IMPLEMENT_DYNCREATE(CPage, CPropertyPage)

CPage::CPage() : CPropertyPage(CPage::IDD)
{
//{{AFX_DATA_INIT(CPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}

CPage::~CPage()
{
}

void CPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPage)
DDX_Control(pDX, IDC_BUTTON1, m_btnTest);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage, CPropertyPage)
//{{AFX_MSG_MAP(CPage)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage message handlers
void CPage::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
// CAboutDlg dlgAbout;
// dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

BOOL CPage::OnSetActive() 
{
// TODO: Add your specialized code here and/or call the base class
CSheet* p=(CSheet*)GetParent();
p->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}

BOOL CPage::OnInitDialog() 
{
CPropertyPage::OnInitDialog();

// TODO: Add extra initialization here
CRect rect;
    AfxGetApp()->GetMainWnd()->ModifyStyle(WS_CAPTION|WS_THICKFRAME|WS_POPUP,0,SWP_NOMOVE); 
    GetClientRect(&rect);
    MoveWindow(0,0,20,20);
return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CPage::PreCreateWindow(CREATESTRUCT& cs) 
{
// TODO: Add your specialized code here and/or call the base class
//
//    SetWindowLong(this->m_hWnd,//     HWND   hWnd,               //   handle   of   window   
//                                      GWL_STYLE,//int   nIndex,             //   offset   of   value   to   set   
//                                                //LONG   dwNewLong       //   new   value   
//                                        0);   
//          ShowWindow(SW_MAXIMIZE);  

return CPropertyPage::PreCreateWindow(cs);
}

void CPage::OnPaint() 
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here
 
// Do not call CPropertyPage::OnPaint() for painting messages
}

在此例子中我想把BUTT ON按钮搞到最左上角

#6


我没有看到你在哪儿贴的图!你贴图的代码在?

#7


引用 6 楼 fandh 的回复:
我没有看到你在哪儿贴的图!你贴图的代码在?

就是有贴图后有个边框,对话框border设为none的代码是什么?

#8


建议贴图的时候,用GetWindosRect

#1


我想你一定是在CPropertyPage里的对话框上设置背景图的,那样当然覆盖不到CPropertyPage控件了.
你需要在CPropertyPage对象里设置了, 你可以重载CPropertyPage类,也可以通过截获CPropertyPage对象的消息来处理.

#2


引用 1 楼 wwgddx 的回复:
我想你一定是在CPropertyPage里的对话框上设置背景图的,那样当然覆盖不到CPropertyPage控件了.
你需要在CPropertyPage对象里设置了, 你可以重载CPropertyPage类,也可以通过截获CPropertyPage对象的消息来处理.

我就是在CPropertyPage对象里设置的,设置完后,显示出来位图不能靠近左边和上边,有框框,风格也设了this->m_psp.dwFlags|= PSH_NOAPPLYNOW;
不知道什么原因?期待解决!

#3


可能刚才没有描述清楚,通俗说如下:
我在属性页加入一张图片,不过显示的时候图片跟属性页边框有一段距离,如何叫图片跟属性页边框紧贴着 
有高手知道吗?

#4


把你的代码贴出来!

#5


引用 4 楼 fandh 的回复:
把你的代码贴出来!

// Page.cpp : implementation file
//

#include "stdafx.h"
#include "test.h"
#include "Page.h"
#include "Sheet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPage property page

IMPLEMENT_DYNCREATE(CPage, CPropertyPage)

CPage::CPage() : CPropertyPage(CPage::IDD)
{
//{{AFX_DATA_INIT(CPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}

CPage::~CPage()
{
}

void CPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPage)
DDX_Control(pDX, IDC_BUTTON1, m_btnTest);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage, CPropertyPage)
//{{AFX_MSG_MAP(CPage)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage message handlers
void CPage::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
// CAboutDlg dlgAbout;
// dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

BOOL CPage::OnSetActive() 
{
// TODO: Add your specialized code here and/or call the base class
CSheet* p=(CSheet*)GetParent();
p->SetWizardButtons(PSWIZB_NEXT);
return CPropertyPage::OnSetActive();
}

BOOL CPage::OnInitDialog() 
{
CPropertyPage::OnInitDialog();

// TODO: Add extra initialization here
CRect rect;
    AfxGetApp()->GetMainWnd()->ModifyStyle(WS_CAPTION|WS_THICKFRAME|WS_POPUP,0,SWP_NOMOVE); 
    GetClientRect(&rect);
    MoveWindow(0,0,20,20);
return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CPage::PreCreateWindow(CREATESTRUCT& cs) 
{
// TODO: Add your specialized code here and/or call the base class
//
//    SetWindowLong(this->m_hWnd,//     HWND   hWnd,               //   handle   of   window   
//                                      GWL_STYLE,//int   nIndex,             //   offset   of   value   to   set   
//                                                //LONG   dwNewLong       //   new   value   
//                                        0);   
//          ShowWindow(SW_MAXIMIZE);  

return CPropertyPage::PreCreateWindow(cs);
}

void CPage::OnPaint() 
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here
 
// Do not call CPropertyPage::OnPaint() for painting messages
}

在此例子中我想把BUTT ON按钮搞到最左上角

#6


我没有看到你在哪儿贴的图!你贴图的代码在?

#7


引用 6 楼 fandh 的回复:
我没有看到你在哪儿贴的图!你贴图的代码在?

就是有贴图后有个边框,对话框border设为none的代码是什么?

#8


建议贴图的时候,用GetWindosRect