待办:
1、为什么相同的数只是类型不同(一个是int型的,一个是DWord型的)就导致大小不一样?
(已解决,因为DWORD是unsigned long的别称。故对于DWORD常量,0xffffffff>0x1,对于int常量,补码存储数据,故0xffffffff<0x1,0xffffffff表示-1)
3、准备面试题
4、看windows程序设计那本书。
学到的新知识:
1、void CopyMemory(目的地址,源地址,要复制的内存块的大小字节数)。作用:将一块内存的数据从一个位置复制到另一个位置。如果目的地址有内容,则需要使用MoveMemory函数。
如果将字符串复制到一个字符数组的位置上,则需要考虑结束符“\0”
#include<windows.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
char a[100];
LPCTSTR p="123456789";
CopyMemory(a,p,10);
MessageBox(NULL,a,"显示内容",MB_OK);
return 0;
}
以上的结果为:
123456789
易错点:1、CopyMemory函数的第一个参数必须为数组首地址,因为是固定的地址,而不能是LPSTR等类型的。
2、CopyMemory函数的第三个参数必须至少为第二个参数的长度加1.
3、对于第一个参数,还有很多不可告人的隐情:看如下两个例子,只改变了一个数,结果变化这么大:
#include<windows.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
char a[100]={'p'};
LPCTSTR p="123456789";
CopyMemory(a+1,p,10);
MessageBox(NULL,a,"显示内容",MB_OK);
return 0;
}
结果为:
p123456789
而对于
#include<windows.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
char a[100]={'p'};
LPCTSTR p="123456789";
CopyMemory(a+2,p,10);
MessageBox(NULL,a,"显示内容",MB_OK);
return 0;
}
结果却为
p
可见……
2、大纲显示outline 切换所有概述toggle all outlining
3、对于_tWinMain(),主要是为了对字符集的兼容。
4、回调函数就是让操作系统调用咱自己写的函数。你调用了系统实现(或者别人)的某个函数(比如 win32 API),而这个函数内又会调用一个由你实现的另一个函数,那么这个另一个函数就是所谓的回调函数。
5、看见_T(“hello”);千万别着急,这也就是为了兼容不同字符集的操作系统来做的。