笔记存档

统计宽字节的字符串长度

1
2
wchar_t *p="aaa";  
int len=wcslen(p2);

CString 转 char *

1
2
3
4
CString str("aaa");
CSringA tmp;
tmp=str;
char *p=tmp.GetBuffer();

事件对象与互斥对象都属于内核对象

添加自定义消息

  1. 定义消息宏

Eg:

1
#define WM_RECVDATA WM_USER+1
  1. 在头文件中添加消息响应函数原型声明

Eg:

1
afx_msg LRESULT OnrecvData(WPARAM wParam,LPARAM lParam);
  1. 在源文件中BEGIN_MESSAGE_MAP( )END_MESSAGE_MAP()之间添加消息映射,不要写在 //}}AFX_MSG_MAP宏之间

Eg:

1
ON_MESSAGE(WM_RECVDATA,OnRecvData)
  1. 编写消息响应函数的实现

  2. 在引发或发出消息的地方使用SendMessage或PostMessage发送消息

类的动态创建

在头文件中添加DECLARE_DYNCREATE(class_name)宏,源文件中添加IMPLEMENT_DYNCREATE(class_name , base_class_name)宏。

Sublime快捷键设置

  1. Ctrl + hjkl 快速移动光标,在首选项->快捷键设置中添加以下代码

    1
    2
    3
    4
    5
    6
    7
    8
    [
    { "keys": ["ctrl+h"], "command": "move", "args": {"by": "characters", "forward": false} },
    { "keys": ["ctrl+l"], "command": "move", "args": {"by": "characters", "forward": true} },
    { "keys": ["ctrl+k"], "command": "move", "args": {"by": "lines", "forward": false} },
    { "keys": ["ctrl+j"], "command": "move", "args": {"by": "lines", "forward": true} },
    { "keys": ["ctrl+shift+h"], "command": "move", "args": {"by": "words", "forward": false} },
    { "keys": ["ctrl+shift+l"], "command": "move", "args": {"by": "word_ends", "forward": true} },
    ]
  2. 开启vim模式

在用户设置中将Vintageignored_packages中删除

SQL 同时count多个表的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT SUM(Info),SUM(K),SUM(Raw) FROM (

SELECT COUNT(*) Info,0 K,0 Raw FROM information

UNION ALL

SELECT 0 Info,COUNT(*) K,0 Raw FROM kline

UNION ALL

SELECT 0 Info,0 K,COUNT(*) Raw FROM update1

)t;