您的位置:首页 > 理论基础 > 计算机网络

学习笔记-杂(网络、C++、API、工具==)

2011-12-28 10:05 232 查看
//以下是自己过往时随手记的一些笔记,以方便自己

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得到的结果可能有错误,有可能丢最高位的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息