您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:82 来源:vckbase.com

本文章共4182字,分3页,当前第1页,快速翻页:
 

深入浅出 CPropertySheet
译者:徐景周(原作:Mustafa Demirhan)

为了最大限度的发挥属性页的效用,首先让我们先从 CPropertySheet 继承一个新类,取名为 CMyPropSheet.
逆@风@者
接着便可以进行下面的各种操作:

一、隐藏属性页默认按钮
隐藏掉Apply应用按钮:


propsheet.m_psh.dwFlags |= PSH_NOAPPLYNOW;
或隐藏掉Cancel取消按钮:

CWnd *pWnd = GetDlgItem( IDCANCEL );

pWnd->ShowWindow( FALSE );

二、移动属性页按钮
首先,要获取按钮的句柄,然后就可以象对待窗体一样处理它们了. 下面代码先隐藏掉Apply和Help铵钮,再把OK和Cancel按移动到右侧。
BOOL CMyPropSheet::OnInitDialog () 

{

    BOOL bResult = CPropertySheet::OnInitDialog();



    int ids [] = {IDOK, IDCANCEL};//, ID_APPLY_NOW, IDHELP };

    

    // Hide Apply and Help buttons

    CWnd *pWnd = GetDlgItem (ID_APPLY_NOW);

    pWnd->ShowWindow (FALSE);

    pWnd = GetDlgItem (IDHELP);

    pWnd->ShowWindow (FALSE);

    

    CRect rectBtn;

    int nSpacing = 6;        // space between two buttons...



    for( int i =0; i < sizeof(ids)/sizeof(int); i  )

    {

        GetDlgItem (ids [i])->GetWindowRect (rectBtn);

        

        ScreenToClient (&rectBtn);

        int btnWidth = rectBtn.Width();

        rectBtn.left = rectBtn.left   (btnWidth   nSpacing)* 2;

        rectBtn.right = rectBtn.right   (btnWidth   nSpacing)* 2;



        GetDlgItem (ids [i])->MoveWindow(rectBtn);

    }



    

    return bResult;

}


下面代码移动所有按钮到右侧,并且重新置属性页为合适的大小.
BOOL CMyPropSheet::OnInitDialog () 

{

    BOOL bResult = CPropertySheet::OnInitDialog();



    

    int ids[] = { IDOK, IDCANCEL, ID_APPLY_NOW };

    

    CRect rectWnd;

    CRect rectBtn;

    

    GetWindowRect (rectWnd);

    GetDlgItem (IDOK)->GetWindowRect (rectBtn);

    

    int btnWidth = rectBtn.Width();

    int btnHeight = rectBtn.Height();

    int btnOffset = rectWnd.bottom - rectBtn.bottom;

    int btnLeft = rectWnd.right - rectWnd.left;



    rectWnd.bottom = rectBtn.top;

    rectWnd.right = rectWnd.right   btnWidth   btnOffset;

    MoveWindow(rectWnd);

    

    rectBtn.left = btnLeft;

    rectBtn.right = btnLeft   btnWidth;



    for (int i = 0; i < sizeof (ids) / sizeof (int); i  )

    {

        rectBtn.top = (i   1) * btnOffset   btnHeight * i;

        rectBtn.bottom = rectBtn.top   btnHeight;

        GetDlgItem (ids [i])->MoveWindow (rectBtn);

    }

    

    return bResult;

}


三、改变属性页上的标签文字

首先修改TC_ITEM结构,然后用 SetItem 来修改标签文字,如下代码:
TC_ITEM item;

item.mask = TCIF_TEXT;

item.pszText = "New Label";



//Change the label of the first tab (0 is the index of the first tab)...

GetTabControl ()->SetItem (0, &item);

四、改变属性页标签文字的字体属性
代码如下
m_NewFont.CreateFont (14, 0, 0, 0, 800, TRUE, 0, 0, 1, 0, 0, 0, 0, _T("Arial") );

    GetTabControl()->SetFont (&m_NewFont);

五、在属性页标签上显示位图
 
本文章更多内容1 - 2 - 3 - 下一页>>
相关文章

对《一个简单的学生成绩管理系统》优化的一
在MFC中用正则表达式对窗体进行有效性验证
如何在NT下获取进程的路径(增补)
高效开发与彻底测试
对话框模板,RegexTest
在MDI程序中实现类似WPS2000的文件切换标签
用DirectShow抓取影片帧
用微软的实时通信API集成丰富的客户端通信
盗QQ,我也会
对《一个完善的ODBC数据库程序》一文的补充
实现类似Excel和Visual C 里文件夹式样的标
利用OpenGL实现动画效果
一个简单的时钟程序
一个完善的ODBC数据库程序
如何定制浮动工具条
一步步制作真彩工具条
自动查找并删除VC生成的临时文件
在VC中调用 WebService (非托管)
如何选中其他程序ListView控件中的某个Item
用C#语言实现http协议下的多线程文件传输

相关评论


本文章所属分类:首页 VC++

  热门关键字: