Visual C++ 2011-4-12

 

1.MakeSureDirectoryPathExists

多级目录创建,如果目录不存在的话,则会自动创建目录

MakeSureDirectoryPathExists("E:\\C\\D\\E\\");

2.PathFileExists

判断一个目录或者文件是否存在

BOOL validFile=PathFileExists(_T("E:\\MyTest.txt"));
BOOL validPath=PathFileExists(_T("E:\develop"));

3.PathIsDirectory

判断路径是否为目录

BOOL validFile=PathIsDirectory(_T("E:\\MyTest.txt"));
BOOL validPath=PathIsDirectory(_T("E:\develop"));

4.获取和设置程序内部环境变量

LPCWSTR key=_T("testword");
::SetEnvironmentVariableW(key,_T("hello world"));
TCHAR chars[1024];
::GetEnvironmentVariableW(key,chars,sizeof(chars));

5.关于全球化及相关信息格式化的介绍

参考:http://msdn.microsoft.com/zh-cn/goglobal/bb688121

6.获取模块句柄和路径

WCHAR key[1024]={};
HMODULE module=GetModuleHandle(_T("kernel32.dll"));
GetModuleFileName(module,key,sizeof(key) -1); 
//获取当前程序exe路径
wchar_t pszFileLoc[1024] = {0}; 
wchar_t *PToken = NULL;
GetModuleFileName(NULL,pszFileLoc,sizeof(pszFileLoc) -1); 

7.二进制的逻辑运算

运算规则: And: 同为真则为真 Or : 同为假则为假 Xor: 相同为假,相异为真

参考:http://zhidao.baidu.com/question/90093606.html

通过二进制的逻辑运算可以用一个数字来代替多个标识.如下

[Flags]
enum Days2
{
    None = 0x0,
    Sunday = 0x1,        //1
    Monday = 0x2,       //10
    Tuesday = 0x4,     //100
    Wednesday = 0x8,  //1000
    Thursday = 0x10, //10000
    Friday = 0x20,  //100000
    Saturday = 0x40//1000000
}

虽然以十六进制来表示,但实际运算是用二进制的,因为如上格式,每个数字”逻辑或|”计算都不会出现重复,这样就可以组成一个新的数字代表多个标识,比较时则用”逻辑与&”,则可以判断出是有有此标识,
去除标识时则用逻辑异或”^”,同理在Win32下的定义也是如此,可以看到每个数字都会进一位二进制,以避免重复(可以理解为一个数字连续x2的结果)

#define SHGFI_ICON              0x000000100     // get icon
#define SHGFI_DISPLAYNAME       0x000000200     // get display name
#define SHGFI_TYPENAME          0x000000400     // get type name
#define SHGFI_ATTRIBUTES        0x000000800     // get attributes
#define SHGFI_ICONLOCATION      0x000001000     // get icon location
#define SHGFI_EXETYPE           0x000002000     // return exe type
#define SHGFI_SYSICONINDEX      0x000004000     // get system icon index
#define SHGFI_LINKOVERLAY       0x000008000     // put a link overlay on icon
#define SHGFI_SELECTED          0x000010000     // show icon in selected state


移位操作: >>(右移)和 <<(左移动),如二进制的111(7)右移2为7>>2=1,左移2为7<<2=11100(28)

八.WaitForSingleObject

在多线程程序中,等待一个线程(可以是其他内核对象,这里方便举例)结束之前,阻塞其他进程.

如下示例

CString strCommand="";
  STARTUPINFO si = {sizeof(si)};
  PROCESS_INFORMATION pi;
  CHAR cWindowsDir[MAX_PATH];
  CHAR cCommand[MAX_PATH];
 
  GetWindowsDirectory(cWindowsDir,MAX_PATH);  //获取系统目录
  strCommand= (CString)cWindowsDir+"\\NotePad.exe";
  strcpy(cCommand,strCommand);  //得到记事本的程序路径
 
  BOOL bRet = CreateProcess(NULL,cCommand,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);//启动记事本程序
  if (bRet)
  {
   if (!WaitForSingleObject(pi.hProcess,INFINITE))// 等待记事本程序关闭
   {
    AfxMessageBox("记事本已经关闭!");
   }
  }

用WaitForSingleObject可以等待记事本关闭后再继续执行,好比程序中弹出一个Dialog的意思是一样的,不这么做的话,程序则会继续往下执行

参考:http://wenku.baidu.com/view/71c713d5360cba1aa811dab2.html

九.SendDlgItemMessage

SendDlgItemMessage是向对话框中的指定控件发送消息。
SendMessage是向指定窗口或者控件发送消息。
SendDlgItemMessage(hDlg,IDC_LIST,LB_ADDSTRING,0,(LPARAM)"ListBox");
可以正常向List中AddString。
SendMessage(hDlg,WM_COMMAND,MAKEWPARAM(IDC_LIST,LB_ADDSTRING),(LPARAM)"ListBox");
不能达到预期的目的。
因为WM_COMMAND是命令消息,主要是菜单或者工具按钮发给窗口的消息,而窗口中没有向List中AddString这种命令,除非你自己加入相应的代码处理。用SendMessage应该向List发送AddString消息。
::SendMessage(::GetDlgItem(this->m_hWnd, IDC_LIST),LB_ADDSTRING,0,(LPARAM)"ListBox");

Microsoft Visual C++ 2015-2019 Redistributable是一款用于支持安装和运行使用Microsoft Visual Studio开发的应用程序所需要的运行时组件。该软件包提供了与C++相关的一系列库文件,如C++运行时库、标准C++库、ATL库、MFC库等。 这个软件包的安装可以在运行使用Visual Studio开发的应用程序时自动进行,也可以手动下载和安装。它的作用是为了让用户在运行这些应用程序时不再需要单独安装Visual Studio开发环境,只需要安装这个Redistributable即可。 Microsoft Visual C++ 2015-2019 Redistributable的主要特点包括: 1. 支持多个版本:它同时支持Visual C++ 2015、2017和2019的各个版本,包括x86和x64两种体系结构。 2. 系统兼容性:适用于多种Windows操作系统,包括Windows 7、Windows 8、Windows 10等系统。 3. 占用空间小:安装包的大小相对较小,不会占用过多磁盘空间。 4. 增强稳定性:安装该运行时组件可以增强应用程序的稳定性和安全性,提高其兼容性和性能。 5. 升级和修复功能:当某个应用程序需要升级或修复时,Redistributable会自动检测并提供相应的版本更新。 总的来说,Microsoft Visual C++ 2015-2019 Redistributable是Microsoft为了方便用户安装和运行使用Visual Studio开发的应用程序而提供的一款运行时组件。它能够提供必要的库文件支持,提高应用程序的兼容性和稳定性,为用户提供更好的使用体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值