VC++技巧

 百度首页 | 百度空间 | 登录 小千~
真希望我的女儿明天就出生

主页博客相册|个人档案 |好友
        查看文章

WTL编程的十个技巧
2008-05-05 15:16
      十个技巧包括:
      ·设置主窗口的大小
      ·启动时在屏幕中央显示主窗口
      ·设置主窗口的最小/最大尺寸
      ·动态加载主窗口标题
      ·将工具栏设置成平面风格
      ·设置对话框文字和背景的颜色
      ·交换对话框按钮位置
      ·设置平面风格的ListView头
      ·在控件中显示整数
      ·在控件中显示资源字符串

      主窗口技巧

      下面的技巧能够同时使用在SDI和MDI应用程序中:

      1.设置窗口生成时的大小
         在程序.CPP文件的Run()函数中使用下面的技术可以控制窗口生成时的大小尺寸。用你想要的窗口大小设置rect的值,然后将这个值作为第二个函数传递给CreateEx()函数,如下所示:
         RECT rc = {0, 0, 380, 265};
         if(wndMain.CreateEx(NULL, rc) == NULL)
      2.将主窗口在桌面中央显示
         要让主窗口在桌面中央显示,只要在应用程序的.CPP文件的Run()的函数的ShowWindow()命令前增加下面的一行代码:
         wndMain.CenterWindow();
      3.设置最小/最大尺寸
         如果你想要控制你的主窗口的最大最小尺寸,你要在在头文件mainframe.h的CMainFrame消息映射表中增加下面的消息处理过程。
         MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)
         完全实现功能,还需要在文件中增加处理函数:
         LRESULT OnGetMinMaxInfo(UINT, WPARAM, LPARAM lParam, BOOL&)
         { // lParam传递MINMAXINFO结构的指针
           LPMINMAXINFO lpMMI = (LPMINMAXINFO)lParam;

           // 改变size结构中的相应的值为我们想要的窗口大小值
           lpMMI->ptMinTrackSize.x = 200; // 最小宽度
           lpMMI->ptMinTrackSize.y = 150; // 最小高度
           lpMMI->ptMaxTrackSize.x = 600; // 最大宽度
           lpMMI->ptMaxTrackSize.y = 450; // 最大高度

           return 0; }
      4.动态设置标题
         是可以通过加载资源中的字符串生成Cstring对象,然后通过这个对象实现动态设置窗口标题。把下面的代码加入到OnCreate()函数中就可以   完成实现这个功能。另外需要在项目中#include
 “atlmisc.h”,这个文件定义了Cstring类。你能够用LoadString()加载最长255个字符的
字符串。
         CString str;
         str.LoadString(IDS_EDITSTRING);
         SetWindowText(str);
      5. Flat-style Toolbar 平面风格工具栏
         使用WTL AppWizard生成程序的时候,如果没有选择rebar的话,生成的工具栏是标准立体按钮。如果你想在没有rebar时工具栏有平面风格,   只要在主框架OnCreate函数的创建工具栏的代码后边增加以下
代码就可以了:
         CToolBarCtrl tool = m_hWndToolBar;
         tool.ModifyStyle(0, TBSTYLE_FLAT);
         Dialog Tips 对话框技巧
         以下的技巧可以使用在对话框或者基于对话框的应用程序中。下边的图显示了我们的示例函数的About对话框,其中使用了两个技巧


      6. Dialog Text and Background Color 对话框文字和背景的颜色
         这个技巧提供了简单快速改变对话框的文字或背景颜色的方法。这篇文章示例程序的About对话框里,我们使用SetTextColor设置文字颜色为   白色。北京颜色使用“Stock brush”设置成黑色。第一步是在对话框消息映
射表中增加以下的两行代码:
         MESSAGE_HANDLER(WM_CTLCOLORDLG, OnCtrlColor)
         MESSAGE_HANDLER(WM_CTLCOLORSTATIC, OnCtrlColor)
         第二步是在OnCtrlColor函数中改变文字和背景的颜色。将背景模式设置为透明,这样可以正确显示静态控件和group box控件文字。接着,   将文字设置成我们想要的颜色,最后设置背景brush。
         在项目中增加atlmisc.h头文件,因为AtlGetStockBrush()函数在这个头文件中定义。有几种Stock brusk可以选择WHITE_BRUSH,    LTGRAY_BRUSH, GRAY_BRUSH, DKGRAY_BRUSH, 和
BLACK_BRUSH,如果使用其它颜色,你需要生成新的brush,
         LRESULT OnCtrlColor(UINT, WPARAM, LPARAM, BOOL&)
         { // 设置背景模式和文字颜色
           SetBkMode((HDC)wParam, TRANSPARENT); // 透明背景
           SetTextColor((HDC)wParam, RGB(255, 255, 255)); // 白色文字

           return (LRESULT)AtlGetStockBrush(BLACK_BRUSH); }
      7.动态交换按钮位置
         下面的代码来自About对话框的OnInitDialog()函数中,用来交换OK和Cancel按钮的位置。其中关键点是将屏幕位置如何转换成相对于Client   的位置。
         CButton bOk = GetDlgItem(IDOK));
         CButton bCancel = GetDlgItem(IDCANCEL));

         // 取得按钮位置
         RECT rcOk, rcCancel;
         bOk.GetWindowRect(&rcOk);
         ScreenToClient(&rcOk);
         bCancel.GetWindowRect(&rcCancel);
         ScreenToClient(&rcCancel);

         // 交换按钮位置
         bOk.SetWindowPos(NULL, &rcCancel, SWP_NOZORDER | SWP_NOSIZE);
         bCancel.SetWindowPos(NULL, &rcOk, SWP_NOZORDER | SWP_NOSIZE);
         控件技巧
         技巧8适用于报表类型的listview控件,技巧9和10适用于接受text的任何控件,如edit控件和richedit控件等。
      8.平面风格的ListView头
         将报表型的listview的头控件改成平面外观,只要如下取得头控件对象,并且修改它的类型
         CHeaderCtrl hdr = MyListView.GetHeader();
         hdr.ModifyStyle(HDS_BUTTONS, 0);
      9.显示整数
         在项目中增加atlmisc.h文件,这个文件定义了Cstring类。然后使用下面的代码在控件中显示整数值
         int nValue = 9999;
         CString sInteger;
         sInteger.Format("%i", nValue);
         MyControl.SetWindowText(sInteger);
      10.显示资源字符串
         使用atlmisc.h头文件中的辅助函数AtlLoadString加载长度可以超过255个字符的字符串,然后将这个字符串显示到控件中。示例程序中使用   下面的代码实现在edit控将中显示字符串。当在资源字符串表
中输入字符串时,要使用/r/n来分行,仅仅/n不能正确分行。
         TCHAR cArray[1000];
         AtlLoadString(IDS_EDITSTRING, cArray, 1000 + 1);
         MyControl.SetWindowText(cArray);
         附加技巧
         下面的技巧可以使用在所有的控件中
      11.缺省字体
         当一个控件被放置在对话框上时,控件就采用对话框的缺省字体。然而,当一个控件如视图或者分割面板被使用在窗口中时,将使用SYSTEM_FONT字体,这种字体不是很漂亮。要改变字体的话,只要在工程中增加atlmisc.h文件,然后调用AtlGetStockFont取得truetype字体DEFAULT_GUI_FONT,将控件设置成这种字体:
         MyControl.SetFont(AtlGetStockFont(DEFAULT_GUI_FONT), TRUE);
      使用条款
         本文章的示例程序是免费的,你可以在任何地方使用。
         THIS SOFTWARE IS DISTRIBUTED AS-IS, WITHOUT WARRANTIES OF ANY KIND.



类别:默认分类 | 添加到搜藏 | 浏览(22) | 评论 (0)
上一篇:DiaLog改背景颜色。。。。。    下一篇:WTL Classes

相关文章:
      • VB6.0初学者的十个编程小技巧          • ASP.NET编程中的十个小技巧
      • 学习编程的十个好习惯!!          • PHP编程的十个高级技巧(二)
      • PHP编程的十个高级技巧(一)          • 站长必去的十个编程网站


最近读者:
     登录后,您就出现在这里。
          bneliao


网友评论:

发表评论:
      姓 名:     注册 | 登录
      *姓名最长为50字节

      网址或邮箱:  (选填)

      内 容:

      验证码:

      看不清?







©2008 Baidu
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值