//以下是自己过往时随手记的一些笔记,以方便自己
1. SetCapture当你的窗体失去焦点时只会响应一次
2. 关键字const应用于紧挨着const的左侧的第一项
注: int const* const ip = NULL;
第一个const紧挨着放在单词int的右侧,因此它应用于ip指向的int,所以不能改变ip指向的值;
第二个const位于符号*的右侧,因此它应用于指向int的指针,即ip,所以不能改变ip自身。
另:int const* const ip = NULL; 等同于const int* const ip = NULL;
3. 所有的钩子都串在一个链表上,最近加入的构造放在链表的头部。当一个事件发生时,WIndows按照从链表头到链表尾的顺序进行访问。
4. 子网掩码255.255.0.255对A类地址是否有效?
答:有效,但不推荐这么做(大部分的路由器不支持非连续的子网掩码)
5. 环回地址必须是127.0.0.1吗?
答:否。对于网络号为127,没有子网号,主机号为任何值的IP都称为环回地址;只是我们经常使用127.0.0.1,且给它命名为了localhost
6. 关于RARP的帧类型字段
答:关于RARP请求是作为一个特殊类型的以太网帧发送的,其帧类型字段为0x8035 (ARP的类型字段为0x0806)
7. c语言下有没有判断文件大小的函数??
long
get_file_size( char * filename )
{
struct stat f_stat;
if( stat( filename, &f_stat ) == -1 ){
return -1;
}
return (long)f_stat.st_size;
}
8. 界面设计推荐可用:GTK+
9. 设计用图如(UML等其他)可用Microsoft visio
10. 读取.ini文件可用函数GetPrivateProfileString
11. 分割字符串: AfxExtractSubString
12. 只能捅开打开一个应用程序实例:创建信号量函数即可: CreateSemaphore
13. 打开最顶层的桌面窗口:GetDesktopWindow
14. 判断一个窗口是否是最小化: IsIconic
The IsIconic function determines whether the specified window is minimized (iconic).
15. 生成自己的输入法可以使用系统(Windows)自带的输入法生成器(Program Files\Windows NT\Accessories\imegen.exe)来生成自己的输入法,这样自己只要接格式写一文本就可以了(具体格式看它的帮助)
16. 传说中的软件行业进军管理的要求: 信息系统管理师?
17. 网络封包分析软件:Ethereal、Wireshark
18. Windows统一使用UTF16,因为Windows充分考虑了多语言,UTF16是对汉字等东亚文字最友好的编码;
Linux的UTF8是以英语为中心的,存贮汉字要三字节且要一步运算转换,而且汉字编码位置不连续!这也是Linux中文化的基础弱点
19. 如何判断一个文本文件是ANSI还是Unicode?
判断如果文本文件的开头两个字节是0xFF和0xFE,那么就是Unicode,否则是ANSI。
20. 如何判断一段字符串是ANSI还是Unicode?
用IsTextUnicode进行判断。IsTextUnicode使用一系列统计方法和定性方法,以便猜测缓存的内容。由于这不是一种确切的科学方法,因此 IsTextUnicode有可能返回不正确的结果。
21. 关于继承,B继承自A,则B会拥有A的一切变量(static除外),包括private,即B对象也有A定义的private的变量空间,但没有直接使用权限,如下测试
class A { private: int nTemp; char ch1; char ch2; }; class B : public A { public: void func() { // nTemp += 13; //B继承了A的所有变量(static除外),但对基类A的private类型的变量不可用 // cout<<nTemp<<endl; } }; int main() { cout<<sizeof(A)<<endl <<sizeof(B)<<endl; //B继承了A的所有变量(static除外),包括private变量 }
22. 验证码识别可以使用开源的Tesseract ocr
23. 提供项目管理及缺陷跟踪服务的管理平台:mantis(Mantis是一个基于PHP技术的轻量级的开源缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上、实用性上足以满足中小型项目的管理及跟踪)
24. classid= "clsid:D27CDB6E-AE6D-11CF-96B8-444553540000 " id= "ShockwaveFlash1 "
D27CDB6E-AE6D-11CF-96B8-444553540000是类ShockwaveFlash的GUID.
这是定义id为ShockwaveFlash1的类实例
25. 对于调用API、socket、==其他的你没有商定(跟提供函数的人)的情况下,如果有参数类型是void*,即使你的工程是UNICODE工程,你也得将UNICODE类型(款字符)通过WideCharToMultiByte转化为char*类型,否则可能出现错误,因为对于提供的函数而言,void*不知道转换为什么类型,大部分默认情况下转换的是char*,所以,注意下该情况,如下
void CHtmlView::Navigate2(LPCTSTR lpszURL, DWORD dwFlags = 0,LPCTSTR lpszTargetFrameName = NULL, LPCTSTR lpszHeaders = NULL, LPVOID lpvPostData = NULL, DWORD dwPostDataLen = 0);
函数Navigate2中的最后的参数是LPVOID,及其大小(不是个数,是占用的内存空间),如果你的工程是UNICODE,传入UNICODE码,但是对于CHtmlView而言,LPVOID类型的参数它不知道应该转成什么类型,款字符or窄字符?所以内部会按char*进行转换,而不是你外边使用的TCHAR*(wchar_t*或char*)
26. 获取桌面区域大小,除去任务栏,同时注意任务栏是否隐藏
RECT rc;
SystemParametersInfo(SPI_GETWORKAREA, 0, (PVOID) &rc, 0);
27. 宽字符与窄字符(wchar_t和char)之间的转换可以通过_bstr_t进行强转,效果等同于MultiByteToWideChar和WideCharToMultiByte,如
wchar_t* wchSrc1 = L"中国供钱党1"; char* chSrc2 = "中国供钱党2"; _bstr_t bst1 = wchSrc1; _bstr_t bst2 = chSrc2; char* chDst1 = (char*)bst1; wchar_t* wchDst2 = (wchar_t*)bst2; string strDst1 = chDst1; wstring wstrDst2 = wchDst2;
//为了更清楚,中间用了很多的变量,强转应该可以去除
注:只是不清楚通过_bstr_t转换有没有字符个数限制
28. 关于创建兼容性位图一定要使用兼容的HDC句柄,而不要使用创建的内存DC(创建的兼容性DC)的句柄
29. 为防止缩放StretchBlt时的失真可以使用SetStretchBltMode(m_hDC, COLORONCOLOR); //m_hDC是目标DC句柄
30. string 转 unsigned long的方法:_tcstoul
注:用_ttol得到的结果可能有错误,有可能丢最高位的数据