zoukankan      html  css  js  c++  java
  • Visual C++ 2011412

    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");

  • 相关阅读:
    Java中Collection和Collections的区别(转载)
    equals和==的区别
    【转载】String、StringBuffer与StringBuilder之间区别
    Mybatis实现
    springMVC---文件上传
    java---Map接口实现类
    java---迭代器(Iterator)
    java---泛型
    java---StringBuilder类的用法(转载)
    c#开源项目收集
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2014173.html
Copyright © 2011-2022 走看看