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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 0;
}

 

  2,打开CMD窗口,输入cl.exe /? 是否有报错,如果有报错 运行

    D:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT 

    盘符看VC 6.0的安装路径,这里也可以双击cl.exe如果报错缺少mspdb60.dll,到百度上去下个放到当前目录

  3,把当前目录切到记事本所在路径 cd D:\XXX\XXX\XXX

    把记事本改名为XXX.c 例如 hello.c

    1,编译:cl.exe /c hello.c 会生成一个hello.obj的文件

    2,链接:link.exe hello.obj user32.lib 会生成一个hello.exe

    双击hello.exe 弹出MessageBox

  4,WinMain参数 lpCmdLine 表示什么?

    把代码修改如下:

    

#include "windows.h"
int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int cmdShow)
{
    MessageBox(NULL,lpCmdLine,"Info",MB_ABORTRETRYIGNORE|MB_ICONINFORMATION);
    return 0;
}

  编译,链接....

  双击hello.exe ... 嗯 什么都没有,弹出来是空的 感觉被忽悠了

  随便拖一个文件到hello.exe 有没看到什么?MessageBox里显示拖进来文件的路径 知道lpCmdLine是什么了吧,也知道视频文件拖到播放器就可以播放是怎么实现的吧

    

句柄:现在暂时理解为句柄是用来找到内存的,绝对不是指针

int WINAPIWinMain(

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

    HINSTANCE hPrevInstance,//当前程序前一个实例句柄

    LPSTR lpCmdLiine,//命令行参数字符串 char*

    int nCmdShow//窗口的显示方式,最大化,最小化...

    );

int MessageBox(

    HWND hWnd,//父窗口句柄,以h开头基本可以确定为句柄

    LPCTSTR lpText,//显示在消息中的文字 char*

    LPCTSTR lpCaption,//显示在标题栏中的文字

    UINT uType//消息框中的按钮、图标显示类型

    );返回点击的按钮ID

  

编写窗口程序的步骤:

  1 定义WinMain函数

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

  3 注册窗口类

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

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

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

  7消息处理

资源的使用

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

  编写rc文件-RC.EXE

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

以上是关于Windows核心编程02-记事本写代码深入理解cl.exe和link.exe的主要内容,如果未能解决你的问题,请参考以下文章

《Windows核心编程》第3章——深入理解handle

如何用记事本编程

spark 深入学习 05RDD编程之旅基础篇02-Spaek shell

MVC深入理解

windows核心编程--2windows的画笔画刷以及一些简单的应用

如何运行文本文档编程命令