万水千山只等闲

常用链接

统计

最新评论

#

SetCommTimeouts

BOOL SetCommTimeouts( HANDLE hFile,  LPCOMMTIMEOUTS lpCommTimeouts );
 
windows系统利用此函数设定通讯设备读写时的超时参数。
  
参数:
      hFile:由CreateFile函数返回指向已打开串行口的句柄。
      lpCommTimeouts :指向拥有超时数据的控制块COMMTIMEOUTS。
 
返回值:
      函数调用成功,返回非0;函数调用失败,返回0。

posted @ 2012-05-30 11:38 Winnie 阅读(1241) | 评论 (0)编辑 收藏

GetCommTimeouts

BOOL GetCommTimeouts( HANDLE hFile,  LPCOMMTIMEOUTS lpCommTimeouts );
 
Windows系统利用此函数获取特定的通讯设备读写时的超时参数设定。
 
参数:
      hFile:由CreateFile函数返回指向已打开串行口的句柄。
      lpCommTimeouts :指向控制块COMMTIMEOUTS。
 
返回值:
      函数调用成功,返回非0;函数调用失败,返回0。

posted @ 2012-05-30 11:29 Winnie 阅读(445) | 评论 (0)编辑 收藏

SetupComm

 BOOL SetupComm(HANDLE hFile, DWORD dwInQueue, DWORD dwOutQueue );

该函数初始化一个指定的通信设备的通信参数。

参数:
  hFile :[IN]通讯设备句柄。 CreateFile函数返回此句柄。
  dwInQueue:[in]指定推荐的大小,以字节为单位,在设备的内部输入缓冲区。
  dwOutQueue :[in]指定推荐的大小,以字节为单位,对设备的内部输出缓冲区。
 
返回值:
  非零表示成功。零表示失败。 要获得更多错误信息,调用GetLastError函数

posted @ 2012-05-30 11:15 Winnie 阅读(657) | 评论 (0)编辑 收藏

VC6升级到VS2010

VS2005之后的IDE封装了MSXML2,项目中使用了第三方控件,为了兼容性,对于使用的MSSML2中的变量名称前均加上域操作符MSXML2::

即在程序头部进行如下定义:

#define IXMLDOMNodeListPtr MSXML2::IXMLDOMNodeListPtr

#define IXMLDOMNodePtr MSXML2::IXMLDOMNodePtr

#define IXMLDOMNamedNodeMapPtr MSXML2::IXMLDOMNamedNodeMapPtr

#define DOMDocument40 MSXML2::DOMDocument40

posted @ 2012-05-08 11:58 Winnie 阅读(409) | 评论 (0)编辑 收藏

#pragma comment

#pragma comment

posted @ 2012-05-07 19:14 Winnie 阅读(241) | 评论 (0)编辑 收藏

ios::nocreate

posted @ 2012-05-07 18:56 Winnie 阅读(315) | 评论 (0)编辑 收藏

VC6中不标准成分

根据C++的标准,在for语句中定义的变量,其作用域仅限于for语句内,但是VC6.0中的for语句不符合标准。
      for(int i = 0; i<5; ++i)
      {
      }
      //i在此处仍然有效 
可以通过如下的宏定义去掉VC6中for的不符合标准的成分:
      #define for if (0); else for              
因为加了上述的宏定义之后,前面的for语句展开为:
      if(0)
            ;
      else
            for(int i = 0; i<5; ++i)
            {
            }
      //此处已经超出else的作用域范围,在else语句中定义的i无效 
有人会说,那定义为如下定义是不是也可以呢?
      #define for if(1) for
我们使用这个宏定义展开前面的for语句看看:
      if(1)
            for(int i = 0; i<5; ++i)
            {
            }
      //此处i也同样超出了if语句的作用域,也将无效
但是,如果for语句是在if语句里的呢,例如:
      if(a>b)
            for(int i = 0; i<5; ++i)
            {
                  dosomething(i);
            }
      else
      {
            doanotherthing();//希望在a<=b时执行
      }
展开将得到:
      if(a>b)
            if(1)
                  for(int i = 0; i<5; ++i)
                  {
                        dosomething(i);
                  }
            else
            {
                  doanotherthing();//实际在a>b时也执行了
            }
另外,如果程序中错误的出现
      for(int i = 0; i < 5; ++i)
      {
      }
      else
      {
      }
通过上述的宏定义展开,也将无错。
当然前一个问题可以通过好的编码习惯避免:给所有的if,else语句都加大括号,即使只有一条语句;而后一个问题可以通过仔细检查而避免。但是介于#define for if(1) for宏定义存在的隐患,
还是使用#define for if (0); else for最好。

posted @ 2012-05-07 18:27 Winnie 阅读(347) | 评论 (0)编辑 收藏

仅列出标题
共4页: 1 2 3 4