1.      Win32应用程序的基本类型.

win32应用程序包含windows窗口程序和控制台程序2种.

窗体程序内置模板代码,控制台程序适合编写dos程序

2.      创建win32窗口程序的几个步骤,及使用到的函数。

// 注册窗口类

RegisterClass(&wc);

// 创建窗口

HWND hwnd = CreateWindow(

cls_Name,           //类名,要和刚才注册的一致

L"我的应用程序",  //窗口标题文字

WS_OVERLAPPEDWINDOW, //窗口外观样式

38,                 //窗口相对于父级的X坐标

20,                 //窗口相对于父级的Y坐标

480,                //窗口的宽度

250,                //窗口的高度

NULL,               //没有父窗口,为NULL

NULL,               //没有菜单,为NULL

hInstance,          //当前应用程序的实例句柄

NULL);              //没有附加数据,为NULL

if(hwnd == NULL) //检查窗口是否创建成功

return 0;

// 显示窗口

ShowWindow(hwnd, SW_SHOW);

// 更新窗口

UpdateWindow(hwnd);

// 消息循环

MSG msg;

while(GetMessage(&msg, NULL, 0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return 0;

}

3.      nmake 与 makefile。

http://truly.cnblogs.com/archive/2005/08/13/213810.html

4.      有哪些字符集? Win32对于各种字符集如何进行兼容及转换? (wchar_t、TCHAR、TEXT() )。

http://www.cnblogs.com/mugua/archive/2009/12/11/1622260.html

单子节字符集,多字节字符集,Unicode字符有时也被称作宽字符。

5.      怎么创建一个子窗口?在哪进行设置?

http://www.cnblogs.com/Fightingbirds/archive/2013/01/03/2843407.html

6.      窗口类的分类,如何创建一个应用程序全局窗口类。

http://blog.csdn.net/dazhi316/article/details/7918502

http://blog.csdn.net/vcbear/article/details/5988

window系统提供了三种类型的窗口类

  • 系统全局类(System global classes)
  • 应用程序全局类(Application global classes)
  • 应用程序局部类(Application local classes)

7.      Win32窗口程序运行机制与控制台程序的运行机制有何区别?

控制台程序:做DOS下使用的程序用的,或者是一个后台运行的服务程序,或者在某些终端使用,不需要用户界面的程序。

8.      Getmessage函数的作用,与Peekmessage函数的区别。

http://zhhdesigner.blog.163.com/blog/static/1307819632010111571540534/

9.      发送WM_QUIT消息使程序终止的内部过程。

http://www.jb51.net/article/52315.htm

11. TranslateMessage及DispatchMessage的作用。

12. SendMessage与PostMessage的区别。

13. Win32消息机制获取消息的过程(先查看什么消息?再查看什么消息?)

Windows把消息分为两种:一种是需要立即处理的消息,另一种是不需要立即处理的消息。

对于需要立即处理的消息,Windows直接把它送给窗口的消息处理函数进行处理,这类消息我们叫做非队列消息;

而对于不需要立即处理的消息,Windows会把它发送给应用程序的消息队列进行排队,由应用程序逐个进行处理,我们把这类消息叫做队列消息。

1、Windows操作系统有一个消息队列,它存放操作系统收到的消息。如:当按键被按下,键盘会发送一个消息到操作系统的消息队列。

2、操作系统把系统消息队列中的消息分派到各个应用程序的消息队列。如果它是第1个应用程序的消息,操作系统把它发给第1个应用程序,把它放在第1个应用程序的消息队列;如果它是第2个应用程序的消息,发送给第2个程序的消息队列。

3、应用程序的消息循环从自己的消息队列中取消息,取出的消息调用窗口过程函数进行处理。

14. 知道有哪几类主要的消息。(WM_CREATE,WM_DESTROY, WM_SIZE, WM_SYSCOMMAND, WM_COMMAND,  WM_PAINT,  鼠标消息, 键盘消息)。

15. 定时器如何使用。

http://blog.csdn.net/fancycow/article/details/6676064

16. 用户自定义消息如何定义。

case WM_COMMAND: //消息
  if(wParam == 菜单id)
  {
    postMessage(hWnd, WM_MSG, ID_USER, NULL); 发送自定义消息?
  }
  break;
case WM_MSG: //自定义消息

17. 创建菜单、设置菜单的函数,在哪处理菜单命令的消息。

http://blog.csdn.net/MikeFeng/article/details/725583

在WindowProc里,设置WM_COMMAND消息

case  WM_COMMAND
        {
                   switch(LOWORD(wparam))
{
case MENU_FILE_OPEN:
{

}
break;
case MENU_FILE_SAVEAS:
{
          }

MENU_FILE_OPEN, MENU_FILE_SAVEAS等为菜单项的ID

18. 加速键如何使用?

http://blog.csdn.net/zhangkala/article/details/3380533

-

  1. 取得程序的实例句柄(hInstance)
  2. 用LoadMenu装入菜单,得到菜单句柄
  3. 用LoadAccelerator装入加速键,得到加速键句柄
  4. 注册窗口类
  5. 创建窗口时在参数中制定菜单句柄
  6. 显示窗口
  7. 然后进入消息循环,在消息循环中用TranslateAccelerator来进行加速键的检测

19. GDI绘图对象,使用的步骤,及函数。

http://blog.csdn.net/chelya111/article/details/7930629

20. 使用位图的步骤及用到的主要函数。

http://songzhangzhang.blog.163.com/blog/static/69401981201083103730338/

21. 可用于文字绘制的API函数。

22. 有模式对话框与无模式对话框的区别,创建步骤。收到的创建消息是什么?

http://blog.csdn.net/cyg0810/article/details/7763351

23. 子控件和父窗口通过什么进行通信? 父窗口在哪里处理子窗口发送的消息?

子控件和父窗口(一般窗口或者对话框)的交互都是通过消息完成。如果子窗口状态发生变化,子窗口会向父窗口发送相应的消息。一般父窗口会使用SendMessage函数向子窗口发送消息。

父窗口响应子窗口发送的消息一般是在WM_COMMAND进行处理。

24. 有哪些常见的子控件?(静态框、编辑框、按钮、listbox、comboBox、滚动条)

25. 什么样的控件支持自绘制?

按钮控件,列表框控件,组合框,

26. 动态库与静态库的区别。

http://blog.csdn.net/gamecreating/article/details/5504152

27. Win32里面怎样用静态库? C++程序在引用c的静态库时,需要注意什么?

http://baitai.iteye.com/blog/848727

http://blog.csdn.net/mafuli007/article/details/8225045

28. Win32里面动态库有哪几种导出方式,有哪几种导入方式?(注意c++的导出方式)

29. Win32里面文件打开和关闭的API。

http://blog.csdn.net/brantyou/article/details/7070719

30. Windows地址空间的划分。

http://blog.csdn.net/dog250/article/details/16356141

31. Windows 内存使用的几种方式及相应的函数(虚拟内存、堆内存、栈内存)。

32. Malloc内部调用A函数,A函数调用B函数。A和B分别是什么?

http://lionwq.spaces.eepw.com.cn/articles/article/item/18555

malloc_init   sbrk(0)

33. 内存映射文件的作用。主要函数。

Windows提供了3种进行内存管理的方法:

• 虚拟内存,最适合用来管理大型对象或结构数组。

• 内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行的多个进程之间共享数据。

• 内存堆栈,最适合用来管理大量的小对象。

http://blog.csdn.net/mg0832058/article/details/5890688

http://www.cnblogs.com/fangyukuan/archive/2010/09/09/1822216.html

int _tmain(int argc, _TCHAR* argv[])

{

//Open the file that we want to map.

1) 创建或打开一个文件内核对象,该对象用于标识磁盘上你想用作内存映射文件的文件。

//注意请在c盘,自己创建一个kuan.txt文件,并写入内容

HANDLE hFile = ::CreateFile(L"C:\\kuan.txt",

GENERIC_READ | GENERIC_WRITE,

0,

NULL,

OPEN_ALWAYS,

FILE_ATTRIBUTE_NORMAL,

NULL);

//Create a file-mapping object for the file.

2) 创建一个文件映射内核对象,告诉系统该文件的大小和你打算如何访问该文件。

HANDLE hFileMapping = ::CreateFileMapping(hFile,

NULL,

PAGE_WRITECOPY,

0, 0,

NULL);

3) 让系统将文件映射对象的全部或一部分映射到你的进程地址空间中。

PBYTE pbFile = (PBYTE)::MapViewOfFile(hFileMapping, FILE_MAP_COPY, 0, 0,0);

cout << pbFile << endl;

当完成对内存映射文件的使用时,必须执行下面这些步骤将它清除:

1) 告诉系统从你的进程的地址空间中撤消文件映射内核对象的映像。

2) 关闭文件映射内核对象。

3) 关闭文件内核对象。

::UnmapViewOfFile(pbFile);

::CloseHandle(hFileMapping);

::CloseHandle(hFile);

return 0;

}

34. 创建进程和打开进程用什么函数? 有什么区别?

ShellExecute   CreateProcess

http://blog.csdn.net/tcjiaan/article/details/8620731

http://www.cnblogs.com/xubin0523/archive/2012/11/01/2749729.html

35. 创建线程用什么函数?

http://www.cnblogs.com/luxiaoxun/archive/2012/10/09/2716514.html

36. Waitforsingleobject与Waitformultiobjects的区别。Waitforsingleobject的第二个参数为0表示什么意思?

http://blog.csdn.net/xiaobai1593/article/details/6672193

如果传递了0,WaitForSingleObject函数将总是立即返回。WaitForSingleObject的返回值能够指明调用线程为什么再次变为可调度状态。如果线程等待的对象变为已通知状态,那么返回值是WAIT_OBJECT_0。如果设置的超时已经到期,则返回值是WAIT_TIMEOUT。如果将一个错误的值(如一个无效句柄)传递给WaitForSingleObject,那么返回值将是WAIT_FAILED(若要了解详细信息,可调用GetLastError)。

37. 关闭线程和关闭进程的函数分别是什么?

TerminateProcess(pro_info.hProcess,exitCode);

BOOL TerminateThread(HANDLE hThread,DWORDdwExitCode);

38. 线程局部存储(TLS)的意义,如何指定一个变量的TLS属性。

http://blog.csdn.net/complex_ok/article/details/4351673

__declspec (thread)int iGlobal_1 = 1;

39. Win32线程同步提供的方式,及主要函数为什么?

Windows操作系统提供了多种同步手段,同步对象包括临界区(Critical Section)、事件(Event)、信号量(Semaphore)、互斥量(Mutex)等。

http://www.cnblogs.com/chengmin/archive/2011/09/26/2192421.html

(1)      临界区对象(CRITICAL_SECTION),也称关键代码段

调用InitializeCriticalSection函数对它进行初始化,之后,线程访问临界区中数据的时候,必须首先调用 EnterCriticalSection 函数,申请进入临界, 当操作完成的时候,要调用LeaveCriticalSection函数将临界区交还给Windows系统,以便其他线程可以申请使用。

(2)      事件内核对象(event)

要使用事件对象,首先用CreateEvent函数去创建它。

事件对象被建立后,程序可以通过SetEvent和ResetEvent函数来设置它的状态。

事件内核对象的同步,代码上体现在对WaitForSingleObject/WaitForMultipleObjects函数的调用,等待事件对象的置信。

CloseHandle(g_hEvent);

(3)      信号量内核对象(Semaphore)

首先使用CreateSemaphore函数创建信号量内核对象。

信号量内核对象的同步,代码上体现在对WaitForSingleObject/WaitForMultipleObjects函数的调用,其同步条件为资源计数大于0,即有可用资源。某个线程处理完共享资源后,需要调用ReleaseSemaphore释放资源,增加可用资源计数。当然,同其他内核对象一样,最终也得调用CloseHandle函数释放信号量内核对象占用的资源。

(4)      互斥内核对象(Mutex)

基于互斥内核对象来保持线程同步用到的函数主要有CreateMutex、OpenMutex、ReleaseMutex,其用法在代码布局上同信号量内核对象。

当目前对资源具有访问权限的线程不再需要访问此资源而要离开时,必须通过ReleaseMutex函数来释放其拥有的互斥对象。

基于互斥内核对象的同步在代码上体现在对WaitForSingleObject/WaitForMultipleObjects函数的调用,以等待互斥内核对象的通知,其同步条件为某一时刻只有一个线程拥有互斥对象。

40. 提供的同步措施中哪些是内核对象? 试比较互斥量和临界区。

同步机制的比较

在同步技术中,临界区是最容易掌握的。它是一种简单的数据结构。同通过等待和释放内核态互斥对象实现同步的方式相比,临界区的速度明显胜出。但是临界区非内核对象,不能用在多进程间的线程同步,只能用于单个进程内部的线程同步。但是,对于普通的单进程程序,鉴于临界区使用旋转锁优先在用户模式同步的高效性,使用临界区不失为一种普遍的同步方案。

事件内核对象是一种基本的内核对象,被广泛使用于多进程、多线程同步通信。实际上,临界区RTL_CRITICAL_SECTION内部即使用了事件内核对象。

信号量机制在内核模式工作,适用于允许特定个数的线程执行某任务。

互斥对象与其他内核对象不同,互斥对象在操作系统中拥有特殊代码,并由操作系统来管理。

win32面试题总结相关推荐

  1. 计算机考试批处理试题,2015计算机三级考试pc技术模拟试题及答案(八)

    2015计算机三级考试pc技术模拟试题及答案(八) 1.关于Windows 98中的网上邻居的相关叙,( )是错误的. A.通过网上邻居可以游览和使用网上的全部计算机资源 B.通过网上邻居可以浏览网上 ...

  2. C#, ASP.NET面试题系列(1)

    C#, ASP.NET面试题系列(1) 注:试题来自互联网,答案仅供参考! 1. (1) 以下叙述正确的是:(BC) A. 接口中可以有虚方法 B. 一个类可以实现多个接口 C. 接口不能被实例化 D ...

  3. .Net面试题(3)

    一.填空题 1.c#中的三元运算符是__?:___? 2.当整数a赋值给一个object对象时,整数a将会被__装箱(封装)___? 3.类成员有_____种可访问形式?  this.;new Cla ...

  4. 十月下旬腾讯,网易游戏,百度盛大迅雷校园招聘笔试题集锦(10.25)

    十月下旬腾讯,网易游戏,百度最新校园招聘笔试题集锦 引言 笔试啊,笔试,面试啊,面试,找工作啊,找工作.此文十月百度,阿里巴巴,迅雷搜狗最新面试十一题已经整理了最新的面试题70道,本文依次整理腾讯,网 ...

  5. python笔试题(1)

            为了充实自己,小编决定上传自己见到的笔试题和面试题.可能要写好长时间,一时半会写不了多少,只能说遇到多少写多少吧,但是只要小编有时间,会持续上传(但是答案却不能保证,所以有看到错误的及 ...

  6. 【我解C语言面试题系列】003 死循环格式问题小结?

    [我解C语言面试题系列]003 死循环格式问题小结? 死循环格式问题小结 下面是几个"著名"的死循环: (1)操作系统死循环: (2)WIN32程序死循环: (3)嵌入式系统软件死 ...

  7. 多线程原理分析面试题理解

    系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些其它IT公司如百度,阿里巴巴的笔试面试题目,因此具有很强的针对性.系列中不但会详细讲解多线程同步互斥的各种&quo ...

  8. zz从一道笔试题谈算法优化(上)

    作者:赖勇浩(http://blog.csdn.net/lanphaday) 引子 每年十一月各大IT公司 都不约而同.争后恐后地到各大高校进行全国巡回招聘.与此同时,网上也开始出现大量笔试面试题:网 ...

  9. C/C++笔试题(基础题)

    为了便于温故而知新,特于此整理 C/C++ 方面相关面试题.分享,共勉. (备注:各题的重要程度与先后顺序无关.不断更新中......欢迎补充) (1)分析下面程序的输出(* 与 -- 运算符优先级问 ...

最新文章

  1. PCIE的事务类型:posted和non posted transaction
  2. php项目架构图,项目架构 · Lanson技术文档 · 看云
  3. PyTorch-运算加速
  4. PYTHON 高效编程
  5. linux-basic(7)linux文件与目录管理
  6. Java == 与 equals 的不同
  7. 基于单机hdfs安装hive
  8. c++怎么将两个类的方法集合成一个类的方法_一文帮你梳理 Java 集合
  9. php 获取header auth,php CURL Auth请求头和响应头获取
  10. ROS2 Galactic nav2 使用自己的行为树插件
  11. 插件占坑,四大组件动态注册前奏(一) 系统Activity的启动流程
  12. 20个最好的免费流程图软件| 流程图制作工具
  13. 【Java】抽象类和接口
  14. 原始Young不等式
  15. 谷歌/FOFA搜索引擎使用
  16. 问题1362:小鑫鑫的平均分
  17. 信奥赛1990:【19CSPS提高组】划分
  18. AutoCAD2022下载安装教程
  19. Python 用均匀分布验证中心极限定理
  20. html有序列表设置混合编码,一组你值得拥有的 Markdown 中混用 HTML 案例

热门文章

  1. Java解决下载--文件名乱码
  2. 安卓手机屏幕镜像显示截取屏幕时没有【不再提示】选项的解决办法
  3. maven自定义插件-mojo标注和参数
  4. Android基于腾讯云的视频聊天研究
  5. .NET Core中Expression<Func<T,bool>>简洁明了
  6. 计算机桌面怎么设置时钟,怎么用DesktopDigitalClock设置电脑桌面时钟
  7. C primer Plus 9.3.4 递归和倒序计算 DE3
  8. Ubuntu下使用NTP同步对时
  9. GIC 基础知识介绍 (一)
  10. [转载] Rooting with a Locked Boot Loader