初探win32

2019-01-24  本文已影响0人  sofency

众所周知,Windows系统是不开源的。
所谓的开源就是该系统的源代码对外开放,就比如我们用的Linux系统,它的源代码就包含在它的文件里面,可以打开文件(绝对路径:usr/src/linux)借鉴其中的源代码。
不开源就是不对外开放自己的源代码,就比如现在大部分使用的Windows操作系统,它的源代码都是经过包装过的,我们学习windows时不需要知道它是怎么实现的,只需要知道怎么用就好了。

win32操作环境 ---------------- Visual Studio 2017

创建项目过程如下:
文件 --->新建 ---> 项目 ---> visual C++ --->Windows桌面应用程序

下面是一个创建的项目代码

    #include"stdafx.h" 
    #include<Windows.h> 
    int _stdcall WinMain(HINSTANCE hInstance,//实例句柄(指向一个实例的无类型指针) 
    HINSTANCE hPrevInstance,//父实例句柄 
    LPSTR lpCmdLine,//命令行 
    int nShowCmd) 
   { 
       if (MessageBoxA(0,//窗口句柄这个消息盒子的父窗口是谁 
       lpCmdLine, //盒子里面的文本  
     "提示",
       MB_YESNO | MB_ICONINFORMATION))//消息盒子的类型  
      { 
           MessageBox(0, 0, 0, 0);
       }
   }

显示的结果如下

1.png 2.png

注:按第一个界面的任意一个按钮直接跳到第二个窗口
没错 窗口打开后会返回值 ,所以可以用到if语句里面当做判断条件

下面来详细讲解下这个项目的各个环节

1.窗口的调用是用Windows系统调用的所以加上它的头文件#include<windows.h>
2._stdcall 代表函数的参数是从右往左进栈的
3.该程序的入口参数是WinMain(书写的大小写一定要规范)
4.HINSTANCE 是void*的转定义形式,一般带H开头的叫句柄 (无类型指针)
5.P ,LP开头的在win32里面代表指针(这些基本上都被微软重定义给掩盖了C语言的写法)
6.windows的数据类型都是大写

下面来写一个播放音乐的程序

#include"stdafx.h"
#include<Windows.h>
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib")
int _stdcall WinMain(HINSTANCE hInstance,//实例句柄(指向一个实例的无类型指针)
    HINSTANCE hPrevInstance,//父实例句柄
    LPSTR lpCmdLine,//命令行
    int nShowCmd)
{
   //wav格式的音乐
    //PlaySound(_T("Candy - Bila.mp3"),//一般用相对路径
    //  NULL,//应用程序实例句柄
    //  SND_ASYNC|SND_FILENAME|SND_LOOP);
     //mp3格式的音乐 
    mciSendString(_T("open 1.mp3 alias cnady"),
    NULL,//接受信息的缓冲区为NULL,不返回信息
    0,//缓冲区大小
    NULL);//回调函数的窗口句柄
    mciSendString(_T("play cnady"),NULL,0,NULL);
    MessageBox(0, 0, 0, 0);//是为了设置断点
}

注意:一定要在该路径下将音乐放进去
C:\Users\sofency\source\repos\(文件名)

3.png

接下来就可以播放美妙的音乐了

上一篇下一篇

猜你喜欢

热点阅读