Windows核心编程03-编写窗口程序的步骤

编写窗口程序的步骤:

  1 定义WinMain函数

  2 定义窗口处理函数(处理消息)

  3 注册窗口类

  4 创建窗口(在内存中创建窗口)

  5显示窗口(根据内存的数据将窗口绘制出来)

  6消息循环(提取/翻译/派发)消息

  7消息处理

#include "windows.h"

LRESULT WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
    return DefWindowProc(hWnd,nMsg,wParam,lParam);
}
//定义WinMain函数
int WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASS wc={0};
    HWND hWnd = 0;
    MSG nMsg = {0};
    //定义窗口处理函数
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = (WNDPROC)WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = NULL;
    wc.hCursor = NULL;
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = "Main";
    //注册窗口类
    RegisterClass(&wc);
    //创建窗口(在内存中创建)
    hWnd = CreateWindow("Main","hWnd",WS_OVERLAPPEDWINDOW,100,100,500,500,NULL,NULL,hInstance,NULL);
    //显示窗口
    ShowWindow(hWnd,SW_SHOW);
    //消息循环
    while(GetMessage(&nMsg,NULL,0,0))
    {
        //消息处理
        TranslateMessage(&nMsg);
        DispatchMessage(&nMsg);
    }
    return 0;
}

编译 链接。。。 cl.exe link.exe

资源的使用

  编写资源的文件-.rc资源脚本文件

  编写rc文件-RC.EXE

  将资源链接到程序中-LINK.EXE

  实际操作步骤:

  1,新建一个HelloWnd.rc的文件,内容为:100 ICON Small.ico

    VC 6.0 对.ico文件的要求很高如果找不到合适的.ico就去建一个窗口程序复制里面的Small.ico

  2,复制Small.ico复制到同个目录

  3,编译:rc.exe HelloWnd.rc 生成HelloWnd.RES

  4,链接 .obj与.RES link.exe HelloWnd.obj HelloWnd.res user32.lib

  5, 生成一个图标改变的 HelloWnd.exe

NMAKE和Makefile

  NMAKE

  Makefile的一个解释执行的工具,根据Makefile文件中的定义,编译和链接程序,最终生成目标文件

  Makefile(.mak)

  定义编译和链接等操作的脚本文件(把项目的处理命令写入),一般对整个项目进行处理。

Makefile的语法:

  HELLO:依赖行

    cl.exe hellownd.c /c //命令行

    rc.exe hellownd.rc //命令行

    link.exe hellownd.obj hellownd.res user32.lib //命令行

  Makefile文件中可以有多个依赖行

  执行方式

  NMAKE首先找到第一个依赖行

  检查依赖行的依赖项,如果发现依赖项,首先执行依赖项命令行

  执行完所有依赖命令后,再执行自己的命令行。

执行步骤:

  1,创建一个.mak的文件 HelloWnd.mak 写入以上语法那几行

  2, 执行命令 使用nmake执行 nmake HelloWnd.mak

  3, 如果有多个依赖行 可以指定执行哪个依赖行 nmake /f HelloWnd.mak CLEAN

  4,多个依赖行执行一次执行及顺序,先执行 : 后的依赖行

    

HELLO:CLEAN
  cl.exe hellownd.c /c
  rc.exe hellownd.rc
  link.exe hellownd.obj hellownd.res user32.lib
CLEAN:
  del  *.obj
  del  *.res
  del  *.exe

  执行命令 nmake HelloWnd.mak 先执行CLEAN的依赖行,再执行HELLO依赖行

  

时间: 2024-11-10 20:36:09

Windows核心编程03-编写窗口程序的步骤的相关文章

Windows核心编程02-记事本写代码深入理解cl.exe和link.exe

接下来用记事本手写代码: 1,建一个空的记事本,敲入以下代码 #include "windows.h" int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int cmdShow) { MessageBox(NULL,"HelloWorld!","Info",MB_ABORTRETRYIGNORE|MB_ICONINFORMATION); return

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

《Windows核心编程》读书笔记 上

[C++]<Windows核心编程>读书笔记 这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLas

C++Windows核心编程读书笔记

转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔记": 关键词:c++windows 核心 编程 读书笔记 这篇笔记是我在读<windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁

Windows核心编程---动态链接库(XX.dll)与静态库(XX.lib)

最近细读了Windows核心编程的内存管理与动态链接库部分,虽然有些人对Windows未来说三道四,但不得不承认微软windows系统的强大功能,以及其深邃的架构设计思想,令人钦佩.通过这次阅读对库文件有了更深刻的认识,总结于此! 动态链接库(Dynamic Linked Library): Windows为应用程序提供了丰富的函数调用,这些函数调用都包含在动态链接库中.其中有3个最重要的三个库为:Kernel32.dll.Use32.dll.GDI32.dll,介绍如下: Kernel32.d

Windows核心编程之核心总结(第一章 错误处理)(2018.5.26)

前沿 学习Windows核心编程是步入Windows编程殿堂的必经之路,2018年寒假重温了计算机操作系统知识,前阵子又过学习Windows程序设计方面的基础,正所谓打铁要乘热,所以我又入了Windows核心编程的坑啦,哈哈~ 学习目标 每一章的学习都要明确一个目标,就是你学完这一章之后你能做些什么?好的,我们一步步来学习第一章节错误处理.以下是这一章节的学习目标:1.了解Windows函数的错误机制2.了解GetLastError和SetLastError函数的使用3.了解FormatMess

Windows核心编程之核心总结(第三章 内核对象)(2018.6.2)

学习目标 第三章内核对象的概念较为抽象,理解起来着实不易,我不断上网找资料和看视频,才基本理解了内核对象的概念和特性,其实整本书给我的感觉就是完整代码太少了,没有多少实践的代码对内容的实现,而且书本给的源码例子,有太多我们不知道的知识,并且这些知识对本章主要内容来说是多余的,所以我们理解起来也非常困难.为了更好的学习这章,我补充了一些辅助性内容.这一章的学习目标:1.Windows会话和安全机制2.什么是内核对象?3.使用计数和安全描述符4.内核对象句柄表5.创建内核对象6.关闭内核对象7.跨进

Windows核心编程第一章.错误处理

Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时,也把自己所学的知识进行 总结,以及巩固. 2.常见的Windows函数返回类型总结 数据类型 作用 VOID 如果是Void表示函数不可能失败.极少数windows函数会返回void BOOL 表示这个函数会有失败情况.0失败.否则就是非0.但是一般都会使用TRUE FALSE来判断. HANDL

Windows核心编程第二章,字符串的表示以及宽窄字符的转换

目录 Windows核心编程,字符串的表示以及宽窄字符的转换 1.字符集 1.1.双字节字符集DBCS 1.2 Unicode字符集 1.3 UTF-8编码 1.4 UTF - 32编码. 1.5 Unicode标准包含的对照表. 2.Ansi字符与Unicode字符的字符串数据类型 2.1.Ansi 与 Unicode数据类型 2.2添加的新的数据类型 2.3 TEXT()宏的使用 3.Windows中的Unicode与Ansi函数 3.1 对于Com接口的移植 4.C 运行库中的Unicod