• CC++ Windows程序设计[1]:第一个Windows程序


    话说学了这么久C++(其实也不久),是否总想着自己弄一款像记事本那样的程序?那么这篇文章就来从对话框开始,讲讲如何写一个Windows程序。


    在写程序之前,我们先来简单介绍下Windows程序和黑窗窗的概念:

    • 其实,我们前面所讲的“黑窗窗”,它的真名应该是 控制台程序(Win32 Console Application) ,也被叫做 “DOS程序” 。DOS是一种早期的命令式操作系统,很难做出漂亮的界面,这种程序对用户来说不是很友好。
    • 带界面的Windows程序全称是 Windows应用程序(Win32 Application) ,带有丰富的交互界面,可以做出很漂亮的程序。

    使用CC++语言可以开发出Windows程序,但是绝大部分CC++语言的教程均没有讲道,只讲了基本语法,让很多初学者认为学C语言没用,什么都做不出来。
    其实不是这样的,C语言只是一种工具,需要与Windows系统结合,借助Windows提供的函数才能开发出漂亮的程序(Windows API)。


    那么现在问题来了,如何开发Windows程序呢?本文使用的是CC++语言,不过其他语言也阔以,比如Visual Basic,C#等等。
    另外,本文中代码的编译环境为 Windows+Visual C++ 6.0或MinGW。


    好了废话了这么多,是时候来上代码了!

    #include <windows.h>
    
    int main(void){
        MessageBox( NULL, TEXT("Hello,world!"), TEXT("第一个Windows程序"), 0 ); //弹出对话框
        return 0;
    }
    

    现在来编译:
      Visual C++ 6.0:
       打开Visual C++ 6.0,选择"文件"-->"新建"-->"工程", 选择"Win32 Application"创建一个空的项目, 再在这个项目中新建一个"文件", 文件类型为"C++ Source File", 文件以.cpp为扩展名, 将上面的代码敲入或者复制粘贴到这个文件内容中, 编译运行,即可得到一个闪亮亮的对话框(大雾)。

      MinGW(纯命令行):
        打开记事本,将上面的代码敲入或者复制粘贴到这个里面,保存。接着打开cmd(Win+R,输入cmd),输入 g++ 代码路径+名称 -o 生成的exe的路径 -mwindows 好了敲下回车,不出问题的话,这段代码应该是编译成功的,运行,你会看到一个闪亮亮的对话框。


    觉得如上步骤麻烦?没关系,我们还有Dev-Cpp编译版本:
      打开Dev-Cpp,点击"工具"-->"编译选项"-->"编译器",选中"在连接命令行时加入以下命令",勾上,再在下面那个框框里面加上 -mwindows,接着新建段代码,将上面的代码敲入或者复制进去,保存,编译,运行。不出问题的话,你会看到一个闪亮亮的对话框。


    现在来一句句解析这段代码:
    先来康#include <windows.h>这段代码,只要是写Windows程序,就必须包含Windows.h这个头文件,里面包含了许多WindowsAPI,如果不添加的话就不能编译了。
    接着是main主函数,这应该是我们最熟悉的了,即程序入口函数。
    然后是MessageBox,这个函数的作用是弹出对话框,接下来着重讲解这个函数:


    先上函数原型:

    int MessageBox(
        HWND hWnd,           //窗口句柄,这将在后面讲解,现在暂时填NULL(即为 空 的意思)
        LPCWSTR lpText,      //对话框的内容,如果要换行里面阔以加上 '
    '
        LPCWSTR lpCaption,   //对话框的标题
        UINT uType           //显示类型
    )
    

    其中 uType 常用的值如下:
    含义
    MB_OK 含义确定按钮
    MB_OKCANCEL 确定和取消按钮
    MB_RETRYCANCEL 重试和取消按钮
    MB_YESNO 是和否按钮
    MB_YESNOCANCEL 是,否和取消按钮
    MB_ABORTRETRYIGNORE 终止,重试和忽略按钮
    MB_ICONSTOP 出现一个"停止"的图标
    MB_ICONWARNING 惊叹号图标
    MB_ICONINFORMATION 感叹号图标
    MB_ICONERROR 错误图标

    比如如下代码会生成一个带确定和取消按钮的对话框:
    MessageBox( NULL, TEXT("这是一个对话框") , TEXT("对话框示例") , MB_OKCANCEL);
    

    那么如果要同时包含按钮和图标怎么办呢?看下面代码:
    MessageBox( NULL , TEXT("这是一个对话框") , TEXT("对话框示例") , MB_OKCANCEL | MB_ICONSTOP);
    

    以上代码会生成一个带确定取消按钮和停止图标的对话框。可以看到,代码唯一做的改动就是加了 `MB_OKCANCEL | MB_ICONSTOP` ,核对上面的表格,你会发现,MB_ICONSTOP是一个停止图标,也就是说,如果你要同时包含按钮和图标,可以使用 `|` 这个运算符,该运算符在CC++中的意思是"或"。

    TEXT宏


    细心的童鞋可能已经发现,我的代码中MessageBox用的是TEXT(x)而不是x,这是为什么呢?这就涉及到Unicode、ANSI编码的知识了,这里不做过多解释。总之在Windows程序开发中,应该尽量使用TEXT(x)或者_T(x)而不是单独的字符串。
  • 相关阅读:
    【Codeforces 475F】—Meta-universe(Set)
    【Codeforces 475F】—Meta-universe(Set)
    【UOJ #79】—一般图最大匹配(带花树)
    【UOJ #79】—一般图最大匹配(带花树)
    【NOIp2019模拟】题解
    【NOIp2019模拟】题解
    涉及到的业务逻辑总结
    2016-9-14
    Spring MVC
    2016-9-12
  • 原文地址:https://www.cnblogs.com/Return-blog/p/12496563.html
Copyright © 2020-2023  润新知