#include<windows.h> // 编写Windows程序必须包含的头文件

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); // 声明窗口函数原型

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd)
{
HWND hwnd; // 定义窗口句柄
MSG msg; // 定义一个用来存储消息的变量
TCHAR lpszClassName[] = TEXT("窗口");

WNDCLASS wc; // 定义一个窗口类变量
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = ::LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor = ::LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = lpszClassName;

::RegisterClass(&wc); // 注册窗口

hwnd= CreateWindow(lpszClassName, // 创建窗口
TEXT("Windows"),
WS_OVERLAPPEDWINDOW,
120,50,800,600,
NULL,
NULL,
hInstance,
NULL);

::ShowWindow(hwnd,SW_SHOWNORMAL); // 显示窗口
::UpdateWindow(hwnd);

while(::GetMessage(&msg,NULL,0,0)) // 消息循环
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return msg.wParam;
}

// 处理消息的窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,
UINT message,
WPARAM wParam,
LPARAM lParam)
{
switch(message)
{
case WM_LBUTTONDOWN: // 鼠标左键下消息
{
::MessageBeep(0); // 可以发出声音的API函数
}
break;
case WM_DESTROY:
::PostQuitMessage(0);
break;
default:
return ::DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}

风   格    宏 解    释
WS_border 单线边框
WS_caption 有标题框的窗口(包括WS_BODER风格)
WS_popup 作为一个弹出式窗口
WS_child 作为子窗体(与WS_popup互斥)
WS_disabled 窗口不能初始化,并且屏蔽与用户的交互
WS_dlgframe 窗口的外观类似与对话框
WS_group 作为窗体的控件,可以与其他控件组合
WS_hscroll 窗口具有水平滚动条
WS_vscroll 窗口具有垂直滚动条
WS_maximize 初始状态为最大化的窗口
WS_maximizebox 窗口右上角有一个最大化按钮
WS_minimize 初始状态为最小化的窗口
WS_minimizebox 窗口右上角有一个最小化按钮
WS_overlappedwindow 这是一个宏组合。为了方便书写,它等价于WS_overlapped|WS_caption|WS_sysmenu|WS_thickframe|WS_minimizebox|WS_maximizebox
WS_overlapped 边框重叠的窗口
WS_sizebox 窗口的边框可以变化
WS_sysmenu 在窗口的标题栏的最左上角有一个窗口菜单
WS_tabstop 窗口作为控件,并且交互可以停留在这个控件上
WS_visible 窗口建立的初始状态是可见的

windows笔记-一个简单的windows GUI应用程序的更多相关文章

  1. java最简单的知识之创建一个简单的windows窗口,利用Frame类

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 微博:http://weibo.com/mcxiaobing 首先给大家看一下 ...

  2. Django 学习笔记之六 建立一个简单的博客应用程序

    最近在学习django时建立了一个简单的博客应用程序,现在把简单的步骤说一下.本人的用的版本是python 2.7.3和django 1.10.3,Windows10系统 1.首先通过命令建立项目和a ...

  3. (1)风色从零单排《C++ Primer》 一个简单的c++程序

    从零单排<C++ Primer> --(1)一个简单的c++程序 本次学习收获 0.写在前面 风色以前上过C++的课程,然而当时并没有认真去学,基本不能使用c++来作项目开发. 这次又一次 ...

  4. 一个简单的c# 贪吃蛇程序

    一个简单的c#贪吃蛇程序 程序分为界面设计和程序设计:界面设计和程序设计均参考了一些游戏实例,但是所有代码内容是本人编写. 由于看到别人写的程序并没有署名,这里的署名全部都是csdn官网. 游戏界面设 ...

  5. 用nodejs搭建一个简单的服务监听程序

    作为一个从业三年左右的,并且从事过半年左右PHP开发工作的前端,对于后台,尤其是对以js语言进行开发的nodejs,那是比较有兴趣的,虽然本身并没有接触过相关的工作,只是自己私下做的一下小实验,但是还 ...

  6. 在 Visual Studio 中创建一个简单的 C# 控制台应用程序

    转载:https://blog.csdn.net/qq_43994242/article/details/87260824 快速入门:使用 Visual Studio 创建第一个 C# 控制台应用 h ...

  7. 实现一个简单的侧边导航Winform程序框架

    目录 简介 实现导航面板 实现方法 使用方法 实现标题栏 窗体拖拽及最大化 自定义窗体按钮 标题显示 按钮设置 实现状态栏 整体使用 参考文章 简介 每次新项目都要想着界面怎么设计好,但想来想去上位机 ...

  8. 在cmd下编译一个简单的servlet时出现程序包javax.servlet不存在

    由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决“软件包 javax.servlet不存 ...

  9. 创建一个简单的maven的web程序

    最近学习Hadoop,发现学习要想用hadoop作为后台运行web程序,必须应用maven,所以学习了今天学习了一下maven,然后搭建了一个简单的web程序 首先我使用的是eclipse中自带的ma ...

随机推荐

  1. Golang在视频直播平台的高性能实践

    http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量 ...

  2. ADB操作多台设备

    1.adb devices 查看所有连接设备. 2.adb -s <设备名> shell 指定device来执行adb shell. 3.adb -s <设备名> <指令 ...

  3. 第17条:实现description方法

    自定义类需要自己覆写description方法,否则打印信息时就会调用NSObject类所实现的默认方法.(如果不覆写,只会输出类名和对象的内存地址的信息,这只有在判断两个指针是否指向同一对象时才有用 ...

  4. ios毛玻璃效果

    方法一:支持所有ios系统版本: - (void)setupBlurView { UIImageView *darkView = [[UIImageView alloc] init]; darkVie ...

  5. 对比iOS中的四种数据存储

    来自于大牛的文章给大家分享下 :http://www.infoq.com/cn/articles/data-storage-in-ios/

  6. C#中运用事件实现异步调用

    问题引出: winform程序中的耗时操作,一般不能在UI线程中执行,需要另开线程.往往我们需要在耗时操作结束后将结果显示在UI上. 以下是Mainform.cs中调用耗时操作的一段代码: Job j ...

  7. thinkphp 模板中赋值

    在项目开发的时候,有时候希望直接在模板中调用 一些自定义方法,或者内置方法来,处理获得一些数据,并且赋值给一个变量给后面调用,这个时候如果用原生Php 的方式调用如下:<?php $abc = ...

  8. javascript闭包的理解

    闭包是Javascript的一个难点,但也是一个很重要的知识点. 1.首先我们要知道变量作用域链 变量的作用域分两种:全局变量和局部变量.没有定义到任何函数中的变量为全局变量,在函数中定义的变量为局部 ...

  9. Java文件操作 读写操作

    一.Java读取文件 案例1:读取D盘的1.txt文件 编码: File file = new File("D:/1.txt"); FileReader fr = new File ...

  10. Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...