CMyPropertyPage *m_Page=new CMyPropertyPage();
AddPage(m_Page);
如何修改m_Page那个标签的名称,
或者可以告诉我如何修改m_Page的caption
setwindowtext已经试过了 报错
CMFCPropertySheet AddPage时怎么修改标签的名称
答案:1 悬赏:40 手机版
解决时间 2021-02-02 09:36
- 提问者网友:喧嚣尘世
- 2021-02-01 10:40
最佳答案
- 五星知识达人网友:洎扰庸人
- 2021-02-01 10:56
Three Methods You Can Use to Select the Caption for Each Page
1. The CPropertyPage constructor has a UINT nIDCaption parameter that can be used to specify a string resource ID. The default is 0 (indicates to use the dialog template caption) but can be any valid string resource ID.
2. The CPropertyPage has a member called m_psp that is a PROPSHEETPAGE structure. You can set this structure's dwFlags element to PSP_USETITLE and pszTitle to a string that will be used as the title. This method can only be used before the call to Create() or DoModal().
3. If you want to change the text in the tabs after the sheet has been created, you can call PropertySheet::GetTabControl() to get a CTabCtrl pointer. You can then fill in a TC_ITEM structure, and using the CTabCtrl pointer, call CTabCtrl::SetItem() to set the text for each tab.
Sample Code:
// CMySheet is derived from CPropertySheet.
// CPage1 is derived from CPropertyPage.
// METHOD ONE ======================================================
// passing the string ID to the constructor. ClassWizard does not
// generate a constructor that takes the caption ID as a parameter,
// so it may be necessary to modify the CPage1's constructor
class CPage1 : public CPropertyPage
{
// ...
public:
CPage1(UINT nIDCaption = 0);
// ...
};
CPage1::CPage1(UINT nIDCaption) :
CPropertyPage(CMyPage::IDD, nIDCaption)
{
//{{AFX_DATA_INIT(CMyPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
// Use the class's constructor to pass the string ID
CMyView::ShowPropertySheet ()
{
m_pSheet = new CMySheet ("Sheet Title");
ASSERT (m_pSheet);
m_pPage1 = new CPage1(IDS_MYCAPTION); // id of string resource
ASSERT (m_pPage1);
m_pSheet->DoModal ();
}
// METHOD TWO ======================================================
// this shows how to change the title of a CPropertyPage before the
// call to DoModal()
CMyView::ShowPropertySheet ()
{
m_pSheet = new CMySheet ("Sheet Title");
ASSERT (m_pSheet);
m_pPage1 = new CPage1;
ASSERT (m_pPage1);
m_pPage1->m_psp.dwFlags |= PSP_USETITLE;
m_pPage1->m_psp.pszTitle = _T("My Caption");
m_pSheet->DoModal ();
}
// METHOD THREE ======================================================
// This function allows you to pass the index number of a
// CPropertyPage and a string to set the title to.
BOOL CMySheet::SetPageTitle (int nPage, LPTSTR pszText)
{
CTabCtrl* pTab = GetTabControl();
ASSERT (pTab);
TC_ITEM ti;
ti.mask = TCIF_TEXT;
ti.pszText = pszText;
VERIFY (pTab->SetItem (nPage, &ti));
return TRUE;
}
1. The CPropertyPage constructor has a UINT nIDCaption parameter that can be used to specify a string resource ID. The default is 0 (indicates to use the dialog template caption) but can be any valid string resource ID.
2. The CPropertyPage has a member called m_psp that is a PROPSHEETPAGE structure. You can set this structure's dwFlags element to PSP_USETITLE and pszTitle to a string that will be used as the title. This method can only be used before the call to Create() or DoModal().
3. If you want to change the text in the tabs after the sheet has been created, you can call PropertySheet::GetTabControl() to get a CTabCtrl pointer. You can then fill in a TC_ITEM structure, and using the CTabCtrl pointer, call CTabCtrl::SetItem() to set the text for each tab.
Sample Code:
// CMySheet is derived from CPropertySheet.
// CPage1 is derived from CPropertyPage.
// METHOD ONE ======================================================
// passing the string ID to the constructor. ClassWizard does not
// generate a constructor that takes the caption ID as a parameter,
// so it may be necessary to modify the CPage1's constructor
class CPage1 : public CPropertyPage
{
// ...
public:
CPage1(UINT nIDCaption = 0);
// ...
};
CPage1::CPage1(UINT nIDCaption) :
CPropertyPage(CMyPage::IDD, nIDCaption)
{
//{{AFX_DATA_INIT(CMyPage)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
// Use the class's constructor to pass the string ID
CMyView::ShowPropertySheet ()
{
m_pSheet = new CMySheet ("Sheet Title");
ASSERT (m_pSheet);
m_pPage1 = new CPage1(IDS_MYCAPTION); // id of string resource
ASSERT (m_pPage1);
m_pSheet->DoModal ();
}
// METHOD TWO ======================================================
// this shows how to change the title of a CPropertyPage before the
// call to DoModal()
CMyView::ShowPropertySheet ()
{
m_pSheet = new CMySheet ("Sheet Title");
ASSERT (m_pSheet);
m_pPage1 = new CPage1;
ASSERT (m_pPage1);
m_pPage1->m_psp.dwFlags |= PSP_USETITLE;
m_pPage1->m_psp.pszTitle = _T("My Caption");
m_pSheet->DoModal ();
}
// METHOD THREE ======================================================
// This function allows you to pass the index number of a
// CPropertyPage and a string to set the title to.
BOOL CMySheet::SetPageTitle (int nPage, LPTSTR pszText)
{
CTabCtrl* pTab = GetTabControl();
ASSERT (pTab);
TC_ITEM ti;
ti.mask = TCIF_TEXT;
ti.pszText = pszText;
VERIFY (pTab->SetItem (nPage, &ti));
return TRUE;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯