VS2010中新控件的编程------字体、链接、浏览等空间的编程

字体、链接、浏览等空间的编程

1)    字体列表

在资源中加入Combox控件,并将属性设置为dropList,将OwnerDraw属性设置为Fixed,将has strings属性设置为TRUE。利用ClassWizard为该控件设置CMFCFontComboBox变量,利用该类的成员函数进行属性设置和变量。

       m_FontCombox.SelectFont(_T("Arial"));

利用Combox控件的改变消息获取当前选择的字体

         CMFCFontInfo*pFontInfo = m_FontCombox.GetSelFont();

         if(pFontInfo != NULL)

         {

                   m_CurFontName=  pFontInfo->m_strName;

                   m_CurFontCharSet= pFontInfo->m_nCharSet;

         }

改变属性并设置

         UpdateData();

         int nFontType = 0;

         if(m_Device)

         {

                   nFontType|= DEVICE_FONTTYPE;

         }

         if(m_Raster)

         {

                   nFontType|= RASTER_FONTTYPE;

         }

         if(m_TrueType)

         {

                   nFontType|= TRUETYPE_FONTTYPE;

         }

         m_FontCombox.Setup(nFontType);

         m_FontCombox.SelectFont(m_CurFontName,m_CurFontCharSet);

利用字体直接在列表框中进行绘制,只需要改变CMFCFontComboBox的m_bDrawUsingFont属性即可。

         UpdateData( );

         m_FontCombox.m_bDrawUsingFont= m_DrawUsing;

         m_FontCombox.RedrawWindow();

2)    位图编辑

VS2010提供了位图编辑功能,能够弹出对话框进行位图的编辑,首先在对话框中添加位图编辑区域为Picture型控件,获得区域并绘制位图。

m_ImageArea.GetClientRect(&m_ImageRect);

m_ImageArea.MapWindowPoints(this,&m_ImageRect);

m_BmpTest.LoadBitmap(IDB_TEST_BMP);

BITMAP bm;

m_BmpTest.GetBitmap(&bm);

m_ImageRect.right = m_ImageRect.left +bm.bmWidth;

m_ImageRect.bottom = m_ImageRect.top +bm.bmHeight;

    添加按钮并定义为CMFCButton型,并为该按钮添加图标

         m_EditBut.SetImage(IDB_IMAGE);

         m_EditBut.SetTextHotColor(RGB(0,0,255));

    在按钮按下消息中调用位图编辑对话框,并获取已经编辑的位图并显示。

HBITMAPm_hBmp = (HBITMAP)::CopyImage(m_BmpTest.GetSafeHandle(),IMAGE_BITMAP,0,0,0);

         if(m_hBmp)

         {

          CMFCImageEditorDialog m_EditImageDlg(CBitmap::FromHandle(m_hBmp),this);

          If(m_EditImageDlg.DoModal()== IDOK)

          {

                   m_BmpTest.DeleteObject();

                   m_BmpTest.Attach(m_hBmp);

                   InvalidateRect(m_ImageRect);

          }

         }

在对话框的onPaint()中增加绘图刷新代码,在退出位图编辑对话框时刷新

         CRectrectFrame = m_ImageRect;

         rectFrame.InflateRect(1,1);

         dc.Draw3dRect(rectFrame,GetSysColor(COLOR_3DLIGHT), GetSysColor(COLOR_3DSHADOW));

         rectFrame.InflateRect(1,1);

         dc.Draw3dRect(rectFrame,GetSysColor(COLOR_3DHILIGHT), GetSysColor(COLOR_3DDKSHADOW));

         dc.DrawState(m_ImageRect.TopLeft(),m_ImageRect.Size(),&m_BmpTest,0);

3)    链接按钮

在资源中增加按钮控件,并定义为CMFCLinkCtrl型,并完成初始化代码

m_LinkBut.SetURL(_T("http:\\www.hao123.com"));

m_LinkBut.SetTooltip(_T("¨°Ì?¡Â°3"));

4)    CVSListCtrl控件

在资源中增加CStatic控件,建立变量,并定义为CVSListBox类型,并进行初始化

m_ListBox.SetStandardButtons();

         m_ListBox.EnableBrowseButton();

         m_ListBox.AddItem(_T("Test Item1"));

         m_ListBox.AddItem(_T("Test Item2"));

5)    EditBrowse控件

在资源中增加EDIT控件,建立变量,并定义为以CMFCEditBrowseCtrl为基类的CMyBrowseEdit类型,并进行初始化

         m_FolderList.EnableFolderBrowseButton();

         m_FileListCtrl.EnableFileBrowseButton();

为了控制Edit中的显示内容,需要对OnBrowse函数进行重载,如本例中,文件浏览只显示文件名,而不显示文件目录名,文件夹浏览只显示目录名,而不显示前面的文件目录系统。

         virtual voidOnBrowse()

         {

                   CStringm_str;

                   int len,i;

                   CMFCEditBrowseCtrl::OnBrowse();

                   GetWindowText(m_str);

                   len= m_str.GetLength();

                   for(i=len-1;i>=0;i--)

                   {

                            if(m_str[i] =='\\')

                                     break;

                   }

                   m_str= m_str.Right(len-i-1);

                   SetWindowText(m_str);

         }

最终软件运行界面:


博主设置当前文章不允许评论。

没有更多推荐了,返回首页