MFC基础知识整理

CComBox::

设置一个指向IDC_COMBO1的指针,用AddString()填充下拉框:

    CComboBox*pComb=NULL; 
    pComb
=(CComboBox*)this->GetDlgItem(IDC_COMBO1);
    pComb
->AddString("Com1");
    pComb
->AddString("Com2");
    pComb
->AddString("Com3");

取得下拉框的索引,然后将它的值赋给一个变量:

     index=pComb->GetCurSel();
     pComb
->GetLBText(index,value);

设置文本框的值:

    CString strTemp;
    GetDlgItemText(IDC_COMBO,strTemp);
    strTemp
+=" ";
    SetDlgItemText(IDC_COMBO,strTemp);

状态栏(StatusBar):

在状态栏中添加一个窗口(ID_STATUSBAR_STR),值为"Test",先在MainFrm中找到Indicators的结构体,然后在

结构体中添加"ID_STATUSBAR_STR",如下:

static UINT indicators[] =
{
    ID_SEPARATOR,           
// status line indicator
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
        ID_STATUSBAR_STR,
}
;

当然,还可以在"VIEW"A菜单中的"Resource Symbols"中添加状态栏窗体(ID_STATUSBAR_STR).下面的代码可以

在程序中动态的改变状态栏的窗口(ID_STATUSBAR_STR)值:

    CClientDC dc(this);
    SIZE size
=dc,GetTextExtent("Test成功拉!");
    
int index=m_wndStatusBar.CommandToIndex(ID_STATUS);
    m_wndStatusBar.SetPanelInfo(index,ID_STATUS_STR,SBPS_POPOUT,size.cx);
    m_wndStatusBar.SetPanelText(index,_T(
"Test成功拉!",TRUE);

 图形图象处理:

DC&GDI

DC的意思是设备环境,GDI的英文全称是Graphics Device Interface,即图形设备接口,在Windows程序中显示工作

是有DC来完成的,绘图工作是由GDI来完成的,那么,在初始化绘图对象之前,应该先初始化DC.

 

基类 CObject      
DC类 CDC      
派生类 CPaintDC CClientDC CWindowsDC CMetaFileDC

CWindowsDC类与CPaintDC,CClientDC类的区别:

1.CWindows类可以在客户区和非客户区绘图,而CPaintDC,CClientDC只能在客户区绘图,所以CWindows

要在MainFrm类中使用,在VeiwL类中使用就不能在非客户区中绘图;

2.CWindows类在整个屏幕中建立坐标,而CPointDC和CClientDC是在客户区中建立坐标的.

绘图设备类(GDI):

基类 CGdiObject          
派生类 CPen CBrush CFont CBitmap CRgn CPalette

绘图类的使用步骤:

1.定义一个GDI对象(如CPen,CBrush等),然后调用相应的函数(如CreatePen,CreatSolidBrush等)创建此GDI

对象.

2.将已构造出的GDI对象利用设备环境类的成员函数SelectObjiect()选入到当前环境中,并同时将原来的GDI对

象保存起来;

3.绘图结束后,恢复当前设备环境中原来的GDI对象,即利用设备环境类的成员函数SelectObjict将原来的GDI对

象重新选入.

下面是一个CPen类绘图的实例:

CPen pen;

pen.CreatPen(OS_SOLID,1,RGB(255,0,0));

CPen *pOldPen=pDC->SelectObjiect(&pen);

......

pDC->SelectObjiect(pOldPen);

改变Edit控件的字体大小:

      CClientDC dc(this);
      CEdit
* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
      CFont
* font = new CFont;
      font
->CreatePointFont(400, _T("华文行楷"), &dc);
      
if(pEdit)
      
{
          pEdit
->SetFont(font, TRUE);
       }

      
else
      AfxMessageBox(
"Failed");

获取应用程序的路径:

    LPTSTR   lpPath   =   new   char[MAX_PATH];   
    GetCurrentDirectory(MAX_PATH,lpPath);   
    strPath   
=   lpPath;   
    strPath   
+=     "//";   
    strPath   
+=   "test.ini";   

 
原文地址:https://www.cnblogs.com/rainbowzc/p/2422190.html