mfc笔记——常用控件的方法

来源:互联网 发布:网络歌曲大全2017视频 编辑:程序博客网 时间:2024/06/06 07:19

1、在static控件中,输出结果

    CString str1;

    CStatic*Static_Vxyz=(CStatic*)GetDlgItem(IDC_V_XYZ);// IDC_V_XYZ为静态控件

    str1.Format("%d",12);

    Static_Vxyz->SetWindowTextA(str1);

 

只用一次的话 直接用:

GetDlgItem(IDC_CAMERA_NUM)->SetWindowText("2");

若需要频繁使用,则在初始化函数中:

CStatic *Static_Vxyz;//在.h文件中

Static=(CStatic*)GetDlgItem(IDC_V_XYZ);// 在初始化函数中

再Static_Vxyz->SetWindowTextA(str1);


2、R​a​d​i​o​b​u​t​t​o​n

Radio1,radio2,关联一个变量m_radio1,设置为bool型

2.1、对单选按钮进行分组:

每组的第一个单选按钮设置属性:GroupTabstopAuto;其余按钮设置属性TabstopAuto。如:

Radio1Radio2Radio3为一组,Radio4Radio5为一组

设定Radio1属性:GroupTabstopAuto

设定Radio2属性:TabstopAuto

设定Radio3属性:TabstopAuto

设定Radio4属性:GroupTabstopAuto

设定Radio5属性:TabstopAuto

2.2、用ClassWizard为单选控件定义变量,每组只能定义一个。如:m_Radio1m_Radio4


3.让按钮变暗和变亮

GetDlgItem(IDC_OPEN_FILE)->EnableWindow(FALSE);//变灰

GetDlgItem(IDC_OPEN_FILE)->EnableWindow(TRUE); //变亮

 

4.当前路径

(1)TCHARszPath[MAX_PATH];

GetModuleFileName(NULL,szPath,MAX_PATH);//得到程序模块名称,全路径

 

(2)当前路径的文件夹

TCHARszPath[MAX_PATH];

GetModuleFileName(NULL,szPath,MAX_PATH);//得到程序模块名称,全路径

(_tcsrchr(szPath,_T('\\')))[1] = 0;//删除文件名,只获得路径字串

CString str_url =szPath;

 

char *ch = _tcsrchr(szFilePath, _T('\\'));查找最后一个\出现的位置,并返回\后面的字符(包括\

ch[1] = 0;//NULL  通过操作来操作szFilePath =szFilePath截断,截断最后一个\后面的字符(不包括\

(3)shbrowseforfolder当前路径

 

#define STRICT

#include <windows.h>

#include <shlobj.h>

 

INT CALLBACKBrowseCallbackProc(HWND hwnd,

                                UINT uMsg,

                                LPARAM lp,

                                LPARAM pData)

{

  TCHAR szDir[MAX_PATH];

 

  switch(uMsg)

  {

  case BFFM_INITIALIZED:

      if(GetCurrentDirectory(sizeof(szDir)/sizeof(TCHAR), szDir))

      {

         // WParam is TRUE since you arepassing a path.

         // It would be FALSE if you werepassing a pidl.

         SendMessage(hwnd, BFFM_SETSELECTION,TRUE, (LPARAM)szDir);

      }

      break;

 

  case BFFM_SELCHANGED:

      // Set the status window to the currentlyselected path.

      if (SHGetPathFromIDList((LPITEMIDLIST) lp,szDir))

      {

        SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szDir);

      }

      break;

  }

  return 0;

}

 

BROWSEINFO stInfo ={NULL};

    TCHAR szPath[MAX_PATH];

    LPCITEMIDLIST pIdlst;

    //stInfo.ulFlags =BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_USENEWUI;//d

    //stInfo.ulFlags =BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;//桌面

    stInfo.ulFlags =  BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;

    stInfo.lpfn = BrowseCallbackProc;//当前文件夹,需要用回调函数

    stInfo.lpszTitle= "请选择路径:";

    pIdlst = SHBrowseForFolder(&stInfo);

    if(!pIdlst) return ;

    if(!SHGetPathFromIDList(pIdlst,szPath))return ;

 

(4)相对路径

#include"../include/mv.h"

 

c#中,相对路径是用"."".."表示, 
"."代表当前目录, 
".."代表上一级录。 
例如假设我用vs2005D:\My Documents\Visual Studio 2005\Projects目录里创建了一个名叫controls的项目,即在Projects文件夹里有一个controls文件夹,controls文件夹里有三个文件:controls.sln  controls文件夹  GulfOfStLawrence文件夹。 
D:\My Documents\Visual Studio2005\Projects\Controls\Controls\bin\Debug是这个简单项目能够运行的可执行文件Controls.exe 
现在我想要 D:\MyDocuments\Visual Studio 2005\Projects\Controls\GulfOfStLawrence文件夹下的Gulf_of_St._Lawrence.mxdarcgis desktop)工程文件路径。 
那么相对路径应该就是"..\..\..\GulfOfStLawrence\Gulf_of_St._Lawrence.mxd" 
stringfilename =@"..\..\..\GulfOfStLawrence\Gulf_of_St._Lawrence.mxd"; 

(5)打开文件夹

char* pcsun="图片文件(*.*)|*.*||";

    CFileDialog OpenDialog(TRUE,NULL,0,OFN_HIDEREADONLY,LPCTSTR(pcsun),NULL);//OFN_OVERWRITEPROMPT

    if(OpenDialog.DoModal()== IDCANCEL)return;

    CString str;

    str = OpenDialog.GetPathName();

    char* path =str.GetBuffer(str.GetLength()+1); 

 

CFileDialog 

参数意义如下:

bOpenFileDialog TRUE则显示打开对话框,为FALSE则显示保存对话文件对话框。

lpszDefExt 指定默认的文件扩展名

lpszFileName 指定默认的文件名。

dwFlags 指明一些特定风格。

lpszFilter 是最重要的一个参数,它指明可供选择的文件类型和相应的扩展名。参数格式如:

"Chart Files (*.xlc)|*.xlc|Worksheet Files(*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc; *.xls|All Files(*.*)|*.*||";文件类型说明和扩展名间用 |分隔,同种类型文件的扩展名间可以用 ;分割,每种文件类型间用 |分隔,末尾用 || 指明。

pParentWnd 为父窗口指针。

 

0 0
原创粉丝点击