VC++对话框的任意扩展.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++对话框的任意扩展 我们在信息输入的时候,可能有很大的信息量,而这些信息又不是必须的,这时我们就需要给信息输入人员一个选择的接口。例如一个人事部门的职工信息录入系统就有这样的问题   ,其中的姓名、性别、年龄、政治面目、职务、学历、部门和联系电话是必须输入的信息,而婚姻状况、毕业学校、籍贯和健康状况是可输可不输的信息且大多数情况下不需要录入,如何为信息录入人员提供一个方便的输入接口,下面我们就针对这个问题提供一个我认为比较好的方法。   第一步:在VC编程环境下建立一个基于对话框的工程,工程名为ExpandDlg,所有的选项都取默认值。   第二步:建立我们都对话框,其中必须要有这样两个控件,一个是PICTURE控件,一个为按钮,其ID值分别为IDC_DIVIDER和IDC_MORE。其它的控件可以任意布局,最终结果就是对话框被IDC_DIVIDER控件分成了两部分,其中下半部分可以根据你的爱好动态显示或不显示,对话框如下图:   第三步:生成按钮IDC_MORE的消息映射函数OnMore,在ExpandDlgDlg.h中定义两个函数如下:   public:   void EnableVisibleChildren();   void ExpandDialog (int nResourceID, BOOL bExpand);   第四步:在ExpandDlgDlg.cpp中定义函数的实现代码如下:   void CExpandDlgDlg::ExpandDialog (int nResourceID, BOOL bExpand)   {    // 对话框被nResourceID分成上下两部分,如果bExpand的值为TRUE    // 对话框被完整显示,否则对话框显示上半部分。    static CRect rcLarge;    static CRect rcSmall;    CString sExpand;    //开始时,对话框只显示上半部分    if (rcLarge.IsRectNull())    {    CRect rcLandmark;    CWnd* pWndLandmark = GetDlgItem (nResourceID);    ASSERT(pWndLandmark);    GetWindowRect (rcLarge);    pWndLandmark-GetWindowRect (rcLandmark);    rcSmall = rcLarge;    rcSmall.bottom = rcLandmark.top;    }    if (bExpand)    {    //扩展对话框到最大尺寸    SetWindowPos(NULL, 0, 0, rcLarge.Width(), rcLarge.Height(),    SWP_NOMOVE | SWP_NOZORDER);    sExpand = Less;    EnableVisibleChildren();    }    else    {    //只显示对话框的上半部分    SetWindowPos(NULL, 0, 0, rcSmall.Width(), rcSmall.Height(),    SWP_NOMOVE | SWP_NOZORDER);    sExpand = More ;    EnableVisibleChildren();    }    SetDlgItemText (IDC_MORE, sExpand);   }   void CExpandDlgDlg::EnableVisibleChildren()   {    //去掉没有显示的对话框的控件的功能和快捷键。    //得到第一个窗口    CWnd *pWndCtl = GetWindow (GW_CHILD);    CRect rcTest;    CRect rcControl;    CRect rcShow;    //得到对话框的完整矩形框    GetWindowRect(rcShow);    while (pWndCtl != NULL)    { //得到当前显示的对话框的矩形尺寸    pWndCtl-GetWindowRect (rcControl);    if (rcTest.IntersectRect (rcShow, rcControl))    pWndCtl-EnableWindow(TRUE);    else    pWndCtl-EnableWindow(FALSE);    //得到第二个矩形框    pWndCtl = pWndCtl-GetWind

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档