#include <windows.h>

LRESULT CALLBACK myProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){

	static TCHAR szClassName[] = TEXT("cabbage");

	MSG msg;//消息结构
HWND hwnd;//窗口句柄
WNDCLASS wc;//窗口类别结构 wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景颜色
wc.hCursor = LoadCursor(NULL, IDC_ARROW);//光标
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);//小图标
wc.hInstance = hInstance;//实例句柄
wc.lpfnWndProc = myProc;//回调函数
wc.lpszClassName = szClassName;//类名
wc.lpszMenuName = NULL;//菜单
wc.style = CS_VREDRAW | CS_HREDRAW; //注册窗口 为程序窗口注册窗口类别
if(!RegisterClass(&wc)){
MessageBox(NULL, TEXT("注册窗口失败"), szClassName, MB_ICONERROR);
return 0;
} //创建窗口 根据窗口类别建立一个窗口
hwnd = CreateWindow(szClassName,//窗口类名
TEXT("hello insert"),//窗口标题
WS_OVERLAPPEDWINDOW,//窗口显示样式
CW_USEDEFAULT, CW_USEDEFAULT,//窗口在显示器上显示离左上角的距离,横轴为x,纵轴为y
CW_USEDEFAULT, CW_USEDEFAULT,//宽口宽度和高度
NULL, NULL, hInstance, NULL);// //显示窗口 在屏幕上显示窗口
ShowWindow(hwnd, nCmdShow);
//刷新窗口 只是窗口自我更新
UpdateWindow(hwnd); //消息循环
while(GetMessage(&msg, NULL, 0, 0)){//获取消息 从消息队列中取得消息
TranslateMessage(&msg);//翻译消息 转译某些键盘消息
DispatchMessage(&msg);//分发消息 将消息发送给窗口消息处理程序
} return 0;
} LRESULT CALLBACK myProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps;//绘图结构
HDC hdc;//设备内容句柄
RECT rect;//矩形结构 switch(msg){
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);//开始绘制窗口 GetClientRect(hwnd, &rect);
DrawText(hdc, TEXT("你好,爱白菜的小昆虫!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER); EndPaint(hwnd, &ps);//结束绘制窗口
break;
case WM_DESTROY://销毁窗口消息
PostQuitMessage(0);//抛出退出程序消息
break;
} //返回执行内定的消息处理
return DefWindowProc(hwnd, msg, wParam, lParam);
}

  

运行结果

windows程序设计 创建一个新的窗口的更多相关文章

  1. Delphi CreateProcess 创建一个新的进程和它的主线程

    Delphi CreateProcess WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件 CreateProcess百科名片 WIN32 ...

  2. Win32 程序开发:创建一个应用程序窗口

    一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSN ...

  3. Step by step 如何创建一个新森林

    原创地址:http://www.cnblogs.com/jfzhu/p/4006118.html 转载请注明出处 创建一个新森林就是在一台计算机上安装AD DS,并将这台计算机提升为域控制器. 演示环 ...

  4. 【Cocos2d-x for WP8 学习整理】(1)创建一个新项目

    喜大普奔                         10.1假期之前看到了一个很振奋的消息,就是随着Cocos2d-x 2.2的发布,WP8/WIN8有史以来第一次的合并到主版本了. 之前 V2 ...

  5. soapui中文操作手册(一)----创建一个新的项目

    1) 创建一个新的项目 点击项目,选择新建项目SOAP.这将打开一个新的SOAP项目对话框. 注意:你也可以做CTRL + N(WIN)或CMD+ N(MAC)来创建一个新的SOAP项目. 在新的SO ...

  6. Eclipse中创建一个新的SpringBoot项目

    在Eclipse中创建一个新的spring Boot项目: 1. 首先在Eclipse中安装STS插件:在Eclipse主窗口中点击 Help -> Eclipse Marketplace... ...

  7. github总结(1)--怎样创建一个新的仓库

    第一步:登录账号,进入github,创建一个新的空仓库 第二步:打开电脑上已经安装好的git-bash,切换至项目所在本地目录 第三步:创建本地仓库及提交文件到本地仓库(用windows命令行或者gi ...

  8. 记一次oracle创建一个新数据库,并导入正式环境数据库备份的dmp包过程

    背景:正式环境oracle数据库定时用exp备份一个dmp包,现在打算在一台机器上创建一个新数据库,并导入这个dmp包. 1.创建数据库 开始 -> 所有程序 -> Oracle -> ...

  9. 创建一个新的解耦的Orchard Core CMS网站

    引言本文将介绍创建一个功能齐全.解耦的CMS网站的过程,该网站允许您编辑博客帖子并呈现它们.解耦是一种开发模型,其中站点的前端和后端(管理)托管在同一个Web应用程序中,但只有后端由CMS驱动.然后, ...

随机推荐

  1. 【python】——python3 与 python2 的那些不兼容

    python2 python3 string.uppercase string.ascii_uppercase string.lowercase string.ascii_lowercase xran ...

  2. THINKPHP5近期暴露的漏洞

    这个THINKPHP5的漏洞涉及好几个版本,我测试中5.0.21和5.0.22都有,据说是5.0 ~ 5.0.23之间的版本都存在,这个漏洞可以执行写文件的操作. 当然了,赶紧升级框架到安全版本是比较 ...

  3. javascript: 类、方法、原型

    // 类.方法.原型 //================================================================================== /* 类 ...

  4. Redis介绍和安装

    一. Redis的介绍 Redis 是一个Key-Value存储的系统:它支持存储的value类型有string(字符串),list(列表),set(集合),zset(有序集合):为了保证效率:数据都 ...

  5. Flask学习笔记(2)--最简单的小应用

    0x01 第一个小程序 PyCharm新建一个flask项目,第一个小程序,我们来看一下 #引入flask类 from flask import Flask #将Flask对象实例化 app = Fl ...

  6. POI导出复杂的excel;excel公共样式类;excel拼接定制类;数据科学计数法转为普通值

    一.excel公共样式类(包含数据科学计数法转为普通值) package com.thinkgem.jeesite.common.utils.excel; import org.apache.poi. ...

  7. java基础---->String中的split方法的原理

    这里面主要介绍一下关于String类中的split方法的使用以及原理. split函数的说明 split函数java docs的说明: When there is a positive-width m ...

  8. 【Jenkins】Jenkins安装

    下载rpm包 wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpm 安装 rpm -ivh jenkins ...

  9. Java 一致性Hash算法的学习

    目前我们很多时候都是在做分布式系统,但是我们需把客户端的请求均匀的分布到N个服务器中,一般我们可以考虑通过Object的HashCodeHash%N,通过取余,将客户端的请求分布到不同的的服务端.但是 ...

  10. Netty5+Jboss(Marshalling)完成对象序列化传输

    TCP在网络通讯的时候,通常在解决TCP粘包.拆包问题的时候,一般会用以下几种方式: 1. 消息定长 例如每个报文的大小固定为200个字节,如果不够,空位补空格: 2. 在消息尾部添加特殊字符进行分割 ...