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

时间:2024-02-24 09:59:23

编写窗口程序的步骤:

  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依赖行