关于windows程序设计 列表框类 ——environ
来源:互联网 发布:金十网数据官网 编辑:程序博客网 时间:2024/06/10 20:25
void FillListBox (HWND hwndList) { int iLength ; TCHAR * pVarBlock, * pVarBeg, * pVarEnd, * pVarName ; pVarBlock = GetEnvironmentStrings () ; // Get pointer to environment block while (*pVarBlock) { if (*pVarBlock != '=') // Skip variable names beginning with '=' { pVarBeg = pVarBlock ; // Beginning of variable name while (*pVarBlock++ != '=') ; // Scan until '=' pVarEnd = pVarBlock - 1 ; // Points to '=' sign iLength = pVarEnd - pVarBeg ; // Length of variable name // Allocate memory for the variable name and terminating // zero. Copy the variable name and append a zero. pVarName = calloc (iLength + 1, sizeof (TCHAR)) ; CopyMemory (pVarName, pVarBeg, iLength * sizeof (TCHAR)) ; pVarName[iLength] = '\0' ; // Put the variable name in the list box and free memory. SendMessage (hwndList, LB_ADDSTRING, 0, (LPARAM) pVarName) ; free (pVarName) ; } while (*pVarBlock++ != '\0') ; // Scan until terminating zero } FreeEnvironmentStrings (pVarBlock) ;}
你如果不知道环境字符串的构造,解释了你也不懂,建议查看一下GetEnvironmentStrings ()的帮助文档,弄清楚了环境字符串你自然就懂了这个函数的意思。环境字符串的构造类似为为"path=c://Windows\0lib=f://lib\0\0",该函数主要获取键值,即"path"和"lib"。
GetEnvironmentStrings ()的帮助文档我会没看过吗?反复看过几次了。哥们,我是实验过,输出过的。while(*pVarBlock++!='='); pVarEnd=pVarBlock-1; iLength=pVarEnd-pVarBeg;现在主要是这3句我不明白,你有没有看懂我的问题啊?要是这么简单的注释,我也懂啦。关键是细节。
首先你注意while(*pVarBlock++!='=');后面的那个分号。相当于while(*pVarBlock!='=') pVarBlock++;举个例子吧,假如环境字符串为"path=c://Windows\0lib=f://lib\0\0",while(*pVarBlock++!='=');就是如果*pVarBlock不为'=',pVarBlock指向下一个字符,所以次循环结束后*pVarBlock为'=';也就是path的后一个位置,iLength=pVarBlock-1-pVarBeg也就是求出path 的长度,因为pVarBlock指向path的后一个位置,pVarBeg指向path的开始。后面的就是分配内存保存字符串path.
http://baike.baidu.com/view/95930.htm
最后注意:如果环境内存块中的环境变量为"path=c://Windows\0lib=f://lib\0\0",对于每个设备环境变量是以"\0"结尾的,是以"\0"标识内存块中设备环境变量的结束,这个函数其实就是获得"path"和"lib"这俩个字符串,并把它们写入列表框中。- 关于windows程序设计 列表框类 ——environ
- Windows程序设计,列表框类
- windows程序设计 第九章 ENVIRON.C中的一个问题
- Windows程序设计,列表框类-显示文件目录
- 《Windows程序设计》之列表框控件
- windows 程序设计——静态类
- windows程序设计——窗口类
- Windows列表框类
- 《Windows程序设计》——字符集
- windows程序设计——CreateProcess()
- Windows程序设计——GetObject
- windows程序设计——键盘
- windows程序设计——鼠标
- windows程序设计——计时器
- 关于windows程序设计的心得体会
- 《Windows程序设计》读书笔记------------->>关于Unicode<<
- 关于如何学习windows程序设计
- 读书笔记——Windows环境下32位汇编语言程序设计(13)关于EXCEPTION_DEBUG_INFO结构体
- Win8系统无法上网的原因与处理方法【绿色】
- 使用RMAN迁移数据库到异机
- 【Oracle】-【TWO_TASK】-TWO_TASK环境变量的作用
- spring ioc原理(看完后大家可以自己写一个spring)
- hdu 1284 钱币兑换问题
- 关于windows程序设计 列表框类 ——environ
- poj 1463 Strategic game(树dp)
- Find m combinations from a N set
- Spring+Hibernate 异常No Hibernate Session bound to thread, and configuration does not allow creation
- 【android】scaleType属性与ImagView中图片的显示的关系 颜色
- timus 1319. Hotel URAL 解题报告
- MFC中绘图
- php之pdo扩展库
- 1046. Shortest Distance (20)—PAT