【windows c++ 笔记】随笔
线程相关
// 返回的伪句柄
Handle thread_handle = GetCurrentThread()
// 返回的唯一线程id
DWORD thread_id = GetCurrentThreadId()
WTL和ATL混用导致编译不过
CString定义冲突
#define _WTL_NO_CSTRING
atl库引入顺序:
#include <atlstr.h>
#include <atlbase.h>
#include <atltypes.h>
#include <atlapp.h>
类的继承
C++构造函数调用顺序:
- 如果类里面有成员类,成员类的构造函数优先被调用;
- 创建派生类的对象,基类的构造函数优先被调用(也优先于派生类里的成员类);
- 基类构造函数如果有多个基类,则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺序;
- 成员类对象构造函数如果有多个成员类对象,则构造函数的调用顺序是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序;
- 派生类构造函数,作为一般规则派生类构造函数应该不能直接向一个基类数据成员赋值而是把值传递给适当的基类构造函数,否则两个类的实现变成紧耦合的(tightly coupled)将更加难于正确地修改或扩展基类的实现。(基类设计者的责任是提供一组适当的基类构造函数)
记录注册表
默认浏览器设置(同理推其它默认位置)
HKEY_CLASSES_ROOT\https\shell\open\command
服务相关
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\(服务名)\
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost
lib库的引用
error: unresolved external symbol
- 检查lib库的编译属性和引用lib工程的编译属性
- 将lib库引入工程
- plan a : project prop
- plan b : #program comment(lib, "xx.lib")
- plan c : 将lib加入资源
- 包含导出头文件