Archive

Posts Tagged ‘vc2005’

Source insight代码对齐

June 28th, 2011 will 2 comments

由于source insight默认采用Verdana字体,这种字体不是等宽的。如果使用这种字体本身就很难对齐(无论是使用空格或Tab键)。

改变source insight的字体,推荐使用Courier New字体,9号大小。方法Options->Document Options中更改,设置如下图所示。

source insight_Document Options副本

对于自动对齐(Auto Indenting),点击上图中的Click Here,设置成如下图所示,比较符合Microsoft风格的代码对齐方式。

source insight_Auto Indenting副本

完成以上设置还不够,在代码中的注释或一些其它的文本仍然会使用Verdana字体,需要Options->Style Properties中各种代码风格的设置。方法是选择Style Name中的每一项,在Font Name项设置成=。如下图所示。

source insight_Style Properties副本

或者省事点,导入Style Properties文件,GLOBAL_xinzero.CF3文件

到这一步编写代码的对齐已经没有问题了。为了好看,还需要更改source insight的context(关联窗口)窗口内的字体。方法,在context窗口内右键->选择Font…,选择Courier New字体。

经测试以上修改过后,在CCS3.3,Keil uVision,VS2005下,代码都是对齐的。UltraEdit默认的制表位为2个字符,更改为4个字符后,也是对齐的。

win7下使用VS2005

May 22nd, 2010 will No comments

前段时间将本本的系统升级到Win7,升级之后第一个做的居然是玩游戏,发现了Win7下《魔兽争霸》《极品飞车》等游戏不能全屏,修改注册表解决Win7游戏全屏。今天需要编译一个程序,需要安装VS2005。和往常一样先安装虚拟光驱daemon tools,但是由于daemon tools的版本太早不支持Win7,导致重启之后进入不了系统,没办法选择了Win7系统自带的系统还原,还原到一个较早的还原点。下载新版的daemon tools可以支持Win7,顺利安装完了VS2005,但在开始菜单中都找不到VS2005的启动程序,在运行中运行“devenv”也不能启动,看到是VS2005与Win7存在兼容性问题,google之,需要安装VS2005补丁VS80sp1-KB926604-X86-CHS.exe,以前支持Vista的补丁,对于Win7同样有效。

PS:安装速度巨慢,慢慢等等吧。有兴趣的同学可以看看这里

Categories: 软件应用 Tags: ,

编程读取注册表获取串口信息(支持Vista)

March 10th, 2010 will No comments

在编写串口通信程序时,经常需要列举计算机上目前可用的串口。最简单的方法是通过CreateFile串口号1~256(XP系统系统下最大支持的串口号为256),查看返回值,如果返回非INVALID_HANDLE_VALUE就证明此串口号存在。此方法简单实用,因为在只有一个串口的情况也需要遍历256个串口,需CreateFile256次,效率较低,而且不能显示目前正在使用的串口号。

下面介绍通过读取注册表获取串口号与串口个数的方法。

#define MAXCOMNO 256  //最大COM号256
typedef struct{
 char name[8];
 short no;
}SCOM;

/////用读注册表的方式查看系统的串口设备
void GetAvailableCom(SCOM *port,int &cnt)
{
 HKEY  hKey; 
 LONG  ret; 
 OSVERSIONINFO    osvi; 
 BOOL  bOsVersionInfoEx; 
 CString  keyinfo;
 unsigned char comm_name[40];
 char ValueName[40];
 char szNO[3];
 int  i=0,j=0;
 cnt=0;
 DWORD  sType,Reserved,cbData,cbValueName;
 
 ZeroMemory(&osvi,  sizeof(OSVERSIONINFO)); 
 osvi.dwOSVersionInfoSize  =  sizeof(OSVERSIONINFO); 
 
 keyinfo.Format(_T("HARDWARE\\DEVICEMAP\\SERIALCOMM"));
 //CString  keyinfo=_T("HARDWARE\\DEVICEMAP\\SERIALCOMM");

 i=0;  sType=REG_SZ;Reserved=0; 
 bOsVersionInfoEx  = GetVersionEx(&osvi); 

 ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,keyinfo,0,KEY_ALL_ACCESS,&hKey); 
 if  (ret==ERROR_SUCCESS)
 {
  if  (osvi.dwPlatformId  ==  VER_PLATFORM_WIN32_WINDOWS)    //WIN32,not used
  { 
   for(i=1;i<=MAXCOMNO;i++) 
   {
    memset(comm_name, 0, 40);
    sprintf((char*)comm_name,"COM%d",i);
    ret=RegEnumValue(hKey, i, ValueName, &cbValueName, NULL, &sType, comm_name, &cbData);
    if(ret==ERROR_SUCCESS)
    {
     i++;
    }

   } 
  } 
  else  if  (osvi.dwPlatformId  ==  VER_PLATFORM_WIN32_NT) //WINNT XP 2000
  { 
   do   
   { 
    cbData=40;cbValueName=40; 
    memset(comm_name,0,40);   
    memset(ValueName,0,40);
    memset(szNO,     0, 3);
    ret=RegEnumValue(hKey, i, ValueName, &cbValueName, NULL, &sType, comm_name, &cbData); 
    if  (ret==ERROR_SUCCESS) 
    { 
     for(j=0;j<cbData;j++)
     {
      port->name[j]=comm_name[j];
      if(j>2 && j<6)
      {
       szNO[j-3] = comm_name[j];
      }
     }
     port->no = atoi(szNO);
     port++;
     cnt++;
     i++; 
    } 
   }while(ret==ERROR_SUCCESS); 
  } 
 }
 RegCloseKey(hKey);
}

port包含串口名称与编号,由于注册表中的串口名称排列并非安装串口号顺序排列而是随即排列的,便于界面中顺序列出串口号,故分别保存便于判断。cnt返回当前计算机中包含的串口数量。

注:由于在串口号大于8之后,不能直接用COM10来CreateFile,而要用\\\\.\\COM10的形式,而在COM8一下采用\\\\.\\COM1来CreateFile也是可以的。
在Vista下用此程序来读取串口号失败,其实并没有失败而是在Vista下访问注册表需要管理员权限。解决办法单击你的程序,右键属性,选择“兼容性”选项卡,勾选最下面的“请以管理员身份运行改程序”。

Categories: 学习笔记 Tags: , ,

VC2005运行库-解决方案

September 7th, 2008 will No comments

VC2005运行库是VC2005编译出来的程序运行所依赖的库(不包括.NET支持),采用manifest方式来指定dll文件。如果将程序.exe文件直接拷贝到没有安装过VC2005的计算机上运行运行,往往会出现找不到msvcr80.dll、mfc80.dll文件等错误。

解决方案:
解决方式一、在目标系统上安装2005版vcredist_x86.exe(全称Microsoft Visual C++ 2005 Redistributable Package (x86))。微软官方下载地址:http://download.microsoft.com/download/d/3/4/d342efa6-3266-4157-a2ec-5174867be706/vcredist_x86.exe

解决方案二、直接拷贝VS8目录下的VC \ redist \ x86 \ 目录下的 Microsoft.VC80.MFC、Microsoft.VC80.CRT、Microsoft.VC80.MFCLOC几个文件夹,到exe所在的目录下,目录结构如下:
.\myapp.exe
.\myapp.dll
.\Microsoft.VC80.CRT\
.\Microsoft.VC80.MFC\
.\Microsoft.VC80.MFC\Microsoft.VC80.MFCLOC\
然后修改Microsoft.VC80.MFCLOC目录下的Microsoft.VC80.MFCLOC.manifest文件,将其中的version=”8.0.50727.42″,修改为version=”8.0.50608.0″。
为了避免保证VS8的完整性,建议先将Microsoft.VC80.MFCLOC的文件拷出来后再修改。

Categories: 学习笔记 Tags: ,

最佳黑色背景的Visual Studio 2005配置

June 4th, 2008 will No comments

博客园看到最佳黑色背景的Visual Studio 2008配置-尤其适合开发人员使用,感觉这个样子还蛮酷的,但是作者提供的设置文件是Visual Studio 2008的,而我使用的Visual Studio 2005不知道能否兼容,为了避免不必要的麻烦,我没有使用配置文件,而是自己修改配置,其实也蛮简单的。在菜单的工具->选项中设置。如图
vc2005_bg_setting

配置后的效果如下
vc2005_background

Categories: 起点记录 Tags: