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