梦,那么近却又那么远!每次带着无比的希望去笔/面试,每次又是耷拉着脑袋灰溜溜的回来,自己需要学习的东西太多了,自己会的东西实在是太少了!记下这些,以纪念今天见不得人的经历。
1、窗口关闭的过程
2、设置定时器后,在ontimer()中执行停滞5秒的语句(sleep()?),窗口会不会刷新?
3、SendMessage和postMessage的区别;
4、WM_CLOSE和WM_DISTROY的区别;
5、不刷新窗口某个区域的函数或方法;
6、链表与数组的内存区别;
7、容器vector和List的内存区别;
8、pop_back的作用。
解答:
1、当点击“close”右上角的“X”时,相应WM_CLOSE消息,通常程序的窗口函数不拦截此消息,于是DefWindowProc处理它;
DefWindowProc收到WM_CLOSE消息后,调用DestroyWindow把窗口清除,同时又发送WM_DISTROY;程序对WM_DISTROY的标准反应是调用PostQuitMessage;PostQuitMessage没什么其他操作,发送WM_QUIT消息,准备让消息循环中的GetMessage取得后返回0,结束消息循环。
2、问题不是太明确,没听清楚。好像是不会刷新;
3、SendMessage 发送消息后等消息完成返回,PostMessage发送消息后立即返回,只是把消息送到消息队列;
4、WM_CLOSE 关闭窗口;WM_DISTROY关闭程序;WM_QUIT退出循环环;点击close触发消息WM_CLOSE,WM_CLOSE调用destroywindows(),发送WM_DISTROY消息,PostQuitMessage发送WM_QUIT消息,退出程序;
5、待解?
6、从逻辑结构上说:数组定义时必须指定大小,不能适应数据动态增减的功能,删除元素会导致内存浪费,增加元素可能导致超出数组大小;链表支持动态分配大小,可以方便地插入、删除元素,数组删除、插入元素需要移动其他元素。从内存存储上来说,数组在栈上分配,链表在堆上分配。数组时顺序存储的,查找元素比较方便但删除、插入需要移动比较多的元素;链表是随机存储的,删除、插入比较方便,但查找需要从头开始,效率低。
7、vector:分配一块不指定大小的连续内存,随机访问方便,可以使用【】和.at(),插入、删除效率低;当添加的元素超出默认的容量时需要整体重新分配、拷和释放。
List:分配不指定大小的不连续内存,插入、删除元素方便,可以在两端操作,不能随机访问。
8、略