EVC编程经验点滴(二)

//========================================================================
//TITLE:
//    EVC编程经验点滴(二)
//AUTHOR:
//    norains
//DATE:
//    Monday  23-October-2006
//========================================================================

1.在对话框中标题栏添加OK按钮
如果是是新建对话框的话,往往标题栏没有"OK"按键,并且在EVC中也没有相关的设置选项.如果需要在标题栏中显示"OK",可以用文本文件打开资源文件.rc,然后在STYLE下添加代码行:EXSTYLE WS_EX_APPWINDOW | 0x80000000L
依我的理解,后面的0x80000000L应该是在模式对话框中按下"OK"键返回的消息.在这里,0x80000000L是用evc创建程序时默认有OK键的对话框里的模板文件中的值


2.一段将某个文件夹中的文件和文件夹添加到列表控件的代码
 TCHAR szAddString[MAX_PATH_LENGTH];
 WIN32_FIND_DATA fd;
 HANDLE hFind;
 hFind=FindFirstFile(szFindDir,&fd);
 if(hFind!=INVALID_HANDLE_VALUE)
 {
  do{
   if(fd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
   {  
    //it must be directory
    PostMessage(hList,LB_ADDSTRING,0,(LPARAM)(LPCTSTR)fd.cFileName);
   }
   else
   { 
    //it is file
    PostMessage(hList,LB_ADDSTRING,0,(LPARAM)(LPCTSTR)fd.cFileName);
   }
 
  }while(FindNextFile(hFind,&fd));
 }
 
 
3.List Control的BUG
 如果List Control的style中的view选择的是Small Icon,并且Align选择的是Top,那么这里将会出现一个小BUG,就是我们看不到垂直的滚动条.这个是evc的BUG,可以用文本编辑器打开.rc文件,在List控件的属性加上LVS_ALIGNTOP即可.
 
 
4.笔针调整的SHELL
 直接调用TouchCalibrate()函数即可
 
 
5.读取文件时容易犯的一个小问题
 在下面这段代码里,TCHAR szBuf[2] 需要初始化为0,否则字符串将显示不出.这是因为读取的文件流中,即使读到文件的最后,也不会有字符串结束符'/0'.
 //Get the old back light level from the file
 HANDLE hFile = CreateFile(SAVE_FILE,
              GENERIC_READ,
              FILE_SHARE_READ,
              NULL,
              OPEN_EXISTING,
              FILE_ATTRIBUTE_NORMAL,
              NULL
              );
 if(hFile==INVALID_HANDLE_VALUE )
 {
  g_iBkLevel=DEFAULT_BACKLIGHT_LEVEL;
 }
 else
 {
  TCHAR szBuf[2]={0}; //这里要全部初始化为0
  DWORD dwRead;
  BOOL bRes = ReadFile(hFile,
             szBuf,
             1,
             &dwRead,
             NULL
            );
  if(bRes = FALSE)
  {
   g_iBkLevel=DEFAULT_BACKLIGHT_LEVEL;
  }
  else
  {
   g_iBkLevel=_wtoi(szBuf);
  }
  CloseHandle(hFile);
 } 
  

posted @ 2006-10-24 09:07  我的一天  阅读(257)  评论(0编辑  收藏  举报