使用属性对话框的一些经验

类别:VC语言 点击:0 评论:0 推荐:

1.去掉Apply Now按钮
m_psh.dwFlags |= PSH_NOAPPLYNOW;
 
2.控制OK、Cancel、Appliy Now、Help按钮
很简单,它们的ID分别为
IDOK、IDCANCEL、ID_APPLY_NOW、IDHELP 
 
3.将属性页上所有的控件都映射到一个值的成员变量上去,这样才能在对控件进行初始化,才能在属性对话框关闭但还没销毁时获取控件的值

4.从一个Page传递消息到其它Page
该Page调用QuerySiblings((WPARAM)sth1, (LPARAM)sth2);

然后在想接受和处理该消息的Page中添加对事件PSM_QUERYSIBLINGS的处理函数,具体如下:
afx_msg BOOL OnQuerySiblings(WPARAM wParam, LPARAM lParam);
ON_MESSAGE(PSM_QUERYSIBLINGS, OnQuerySiblings)
BOOL COnePage::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
}
若若该函数返回非零值,则消息传递就停止了
 
5.设置PropertyPage标题的三种方法
(1)创建时传入字符串资源ID
m_pPage1 = new  CMyPropertyPage(IDS_MYCAPTION);
(2)修改CPropertyPage.m_psp
m_pPage1->m_psp.dwFlags |= PSP_USETITLE;
m_pPage1->m_psp.pszTitle = _T("My Caption");
注意:这种修改只能在CPropertySheet的Create和DoModal之前进行;
          如果是从文件中读出一个字符串来进行设置,最好把这个字符串放在一个静态字符数组里面,例如
static char strTitle[32];
m_pPage1->m_psp.pszTitle = strTitle;
(3)CTabCtrl::SetItem()
CTabCtrl* pTab = GetTabControl();
TC_ITEM ti;
ti.mask = TCIF_TEXT;
ti.pszText = pszText;
pTab->SetItem (nPage, &ti);
注意:这种方法可以在CPropertySheet的实例被创建之后进行

本文地址:http://com.8s8s.com/it/it496.htm