Windows相关知识
(一)LoadMaps();三个参数,代表选中前,中,选中后要出现的效果的图片ID;
(二)Createthread与_beginthreadex的区别
1.主要是使用Createthread在c中使用时多线程返回错误码给全局变量errno时容易出错,很容易导致数据覆盖问题出现。
2._beginthreadex每个线程创建都将拥有自己专用的一块内存区域来共标准c运行库中所有有需要的函数使用。
都要记得closehandle防止内核泄露。
3.mfc中用WriteProfileInt等方法保存用用程序配置
4.指定下载url内容到指定文件用的函数URLDownloadToFile
5.createFolder方法创建文件夹
6.lstrcpy、strcpy、_tcscpy、wcscpy区别
1)lstrcpy是windows API函数而其他的是c库函数,既能作用于ASCII又能作用于UNICODE
2)_tscpy是一种兼容函数,当定义了UNICODE(_UNICODE)时为wcscpy,没定义UNICODE(_UNICODE)时为strcpy
3)strcopy是lstrcpy的一种调用,最好使用lstrcpy。
6.MoveFile、MoveFileExit、CopyFile的异同:
相同:
1)都支持跨卷操作(但是MoveFileExit要设置为MOVEFILE_COPY_ALLOWED)
异:
1)MoveFile不支持覆盖现有文件
2)MoveFileEx的调用标志设为MOVEFILE_REPLACE_EXISTING时,file2的只读属性决定调用的成功与否, 和隐藏属性无关
3)CopyFile使用时要考虑到文件的只读和隐藏属性。
如果要移动文件可以先去掉属性然后移动后在相应的加上属性。
WinExec()、System()、ShellExecute异同
1、WinExec它的第一个参数必须包含一个可执行文件名。
2、System()是c库函数,它接受一个DOS命令
3、从功能上CreateProcess->ShellExecute->WinExec。
4、Winexec只用于可执行文件,但是兼容性不好。
5、ShellExecute可以通过windows外壳打开任意文件,非课执行文件自动通过关联的程序打开
6、WinExec必须有GetMessage或者超时之后才返回但是CreateProcess和ShellExecute都是直接返回的
(一)使用stringstream对象简化类型转换
在编译期就确定了,所以编译器拥有足够的信息来判断需要哪些转换。<sstream>库中声明的标准类就利用了这一点,自动选择所必需的转换。而且,转换结果保存在stringstream对象的内部缓冲中。你不必担心缓冲区溢出,因为这些对象会根据需要自动分配存储空间。
sstream标准库引入ostringstream、istringstream、stringstream
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
stringstream类同时可以支持C 风格的串流的输入输出操作。
(二)操作注册表相关函数
1、RegOpenkeyEx()打开一个指定的注册表键调用成功返回0,否则返回一个非零的代码。
2、RegQueryValueEx()检索一个已经打开的注册表句柄中,指定的注册表键的类型和设置值。
3、RegSetValueEx该函数将在注册表项下设置指定值的数据和类型。
4、RegCloseKey释放指定注册键的句柄。
_Access()检查文件的属性
PathAppend将一个路径追加到另一个路径中。
FindFirstFile根据文件名查找文件。该函数到一个文件夹(包括子文件夹)去搜索指定文件 如果要使用附加属性去搜索文件的话 可以使用FindFirstFileEx函数。它的第二个参数是保存文件属性的参数(输出参数)
CreateToolhelp32Snapshot
函数通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照.
说到底,可以获取系统中正在运行的进程信息,线程信息,
process32First 是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来获得第一个进程的句柄.其原型为(用的是vfp)
Process32Next是一个进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用Process32Next函数来获得下一个进程的句柄
1.locale Global(locale(""))设定全局locale为环境设置的locale。
2.使用CMarkUp类解析XML。
3.WinInet API可以使用三个常见的Internet协议,分别为HTTP协议、FTP协议、Gopher协议。
普通WinInet处理函数:
1)InternetOpen初始化Winlnet.dll
2)InternetOpenUrl打开Url,读取数据。
3)InternetAttemptConnect尝试建立到Internet连接
4)InternetConnect建立Internet的连接
HTTP 协议处理函数:
1) HttpOpenRequest 打开一个 HTTP 请求的句柄
2) HttpSendRequert(Ex) 向 HTTP 服务器发送指定的请求
3) HttpQueryInfo 查询有关一次 HTTP 请求的信息
4) HttpEndRequest 结束一个 HTTP 请求
5) HttpAddRequestHeaders 添加一个或多个 HTTP 请求报头到 HTTP请求句柄
资源ID号码可以重用,但最重要的一个原则是
相同类型资源ID值不要重(ID_STATIC除外)。
例如你的一个DLG ID可以和一个控件ID重,也可以和一个字符串ID同。
但两个字符串ID绝不能相同
APS_NEXT_RESOURCE_VALUE 是将用于对话框资源、菜单资源等的下一符号值。 资源符号值的有效范围为 1 到 0x6FFF。
_APS_NEXT_COMMAND_VALUE 是将用于命令标识的下一符号值。 命令符号值的有效范围为 0x8000 到 0xDFFF。(菜单栏)
_APS_NEXT_CONTROL_VALUE 是将用于对话框控件的下一符号值。 对话框控件符号值的有效范围为 8 到 0xDFFF。
_APS_NEXT_SYMED_VALUE 是当你在符号浏览器中使用“新建”命令手动分配符号值时将发出的下一符号值。(状态栏)