// Myday03.cpp : 定义应用程序的入口点。

//

#include "stdafx.h"

#include "Myday03.h"

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance ,

LPSTR lpCmdLine ,

int nCmdShow )

{

LPCTSTR myLpszClassName = (LPCWSTR )_T("MainWin");

LPCTSTR myWndTitle = (LPCWSTR )_T("我的第一个窗口");

/*

typedef struct _WNDCLASS {

UINT style;// 窗口类型

WNDPROC lpfnWndProc;//窗口处理函数

int cbClsExtra;//窗口扩展

int cbWndExtra;//窗口实例扩展

HINSTANCE hInstance;//实例句柄

HICON hIcon;//窗口的最小化图标

HCURSOR hCursor;//窗口鼠标光标

HBRUSH hbrBackground;//窗口背景色

LPCTSTR lpszMenuName;//窗口菜单

LPCTSTR lpszClassName;// 窗口类名

} WNDCLASS, *LPWNDCLASS;

typedef struct WNDCLASSEX {

UINT cbSize;  //WNDCLASSEX 的大小。我们可以用sizeof(WNDCLASSEX)来获得准确的值。

UINT style; //从这个窗口类派生的窗口具有的风格。您可以用“or”操作符来把几个风格或到一起。

WNDPROC lpfnWndProc;//窗口处理函数的指针。

int cbClsExtra; //指定紧跟在窗口类结构后的附加字节数。

int cbWndExtra; //指定紧跟在窗口实例的附加字节数。如果一个应用程序在资源中用CLASS伪指令注册一个对话框类时,则必须把这个成员设成DLGWINDOWEXTRA。

HINSTANCE hInstance; //本模块的实例句柄。

HICON hIcon; //图标的句柄。

HCURSOR hCursor; //光标的句柄。

HBRUSH hbrBackground; //背景画刷的句柄。

LPCTSTR lpszMenuName; //指向菜单的指针。

LPCTSTR lpszClassName; //指向类名称的指针。

HICON hIconSm; //和窗口类关联的小图标。如果该值为NULL。则把hIcon中的图标转换成大小合适的小图标。

} WNDCLASSEX, *PWNDCLASSEX;

*/

WNDCLASSEX wce{};//增强版WNDCLASS

wce.cbSize = sizeof(wce);

wce.style = CS_HREDRAW | CS_VREDRAW ;

/*

DefWindowProc 这个函数是默认的窗口处理函数,我们可以把不关心的消息都丢给它来处理。

这个函数在处理关闭窗口消息WM_CLOSE时,是调用DestroyWindow函数关闭窗口并且发WM_DESTROY消息给应用程序;而它对WM_DESTROY这个消息是不处理的(考虑为什么?);

我们在应用程序中对这个消息的处理是发出WM_QUIT消息。因此WM_CLOSE、WM_DESTROY、WM_QUIT这三个消息是先后产生的。

hWnd:指向接收消息的窗口过程的句柄。

Msg:指定消息类型。

wParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。

IParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。

返回值:返回值就是消息处理结果,它与发送的消息有关。

DefWindowProc // 默认的窗口消息处理程序

*/

//wce.lpfnWndProc = hInstance;

wce.lpfnWndProc = DefWindowProc;

wce.cbClsExtra = 0;

wce.cbWndExtra = 0;

wce.hInstance = hInstance;

wce.hIcon = NULL;

wce.hCursor = NULL;

wce.hbrBackground = GetSysColorBrush( COLOR_3DFACE);

wce.lpszMenuName = NULL;

wce.lpszClassName = myLpszClassName;

wce.hIconSm = NULL;

ATOM nAtom = RegisterClassEx (&wce);

if (nAtom == 0){

MessageBox(NULL , _T("注册失败"), _T("错误信息" ), MB_OK);

return 0;

}

/*

WND CreateWindowEx(

_In_       DWORD DdwExStyle,        //窗口的扩展风格

_In_opt  LPCTSTR lpClassName,    //指向注册类名的指针

_In_opt  LPCTSTR lpWindowName,   //指向窗口名称的指针

_In_       DWORD dwStyle,          //窗口风格

_In_       int x,                  //窗口的水平位置

_In_       int y,                  //窗口的垂直位置

_In_       int nWidth,             //窗口的宽度

_In_       int nHeight,            //窗口的高度

_In_opt_              HWND hWndParent,        //父窗口的句柄

_In_opt_              HMENU hMenu,            //菜单的句柄或是子窗口的标识符

_In_opt_              HINSTANCE hInstance,    //应用程序实例的句柄

_In_opt_              LPVOID lpParam          //指向窗口的创建数据

);

*/

HWND mainHWnd = CreateWindowEx (WS_EX_ACCEPTFILES, myLpszClassName, myWndTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT , CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL , NULL, hInstance, NULL);

CreateWindowEx(WS_EX_ACCEPTFILES ,

myLpszClassName,

myWndTitle,

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

mainHWnd,

NULL,

hInstance,

NULL);

/*

该函数设置指定窗口的显示状态。

hWnd:指窗口句柄。

nCmdShow:指定窗口如何显示。

*/

ShowWindow(mainHWnd, SW_SHOW);

MSG nMsg {};

while (GetMessage (&nMsg, NULL, 0, 0))

{

TranslateMessage(&nMsg);

DispatchMessage(&nMsg);

}

return TRUE ;

}

转载于:https://blog.51cto.com/quietnight/1753122

我的第一个win32窗口程序------------记录相关推荐

  1. 第一个 Win32 窗口程序

    第一个 Win32 窗口程序 程序骨架 int WinMain(){ // 设计窗口外观及交互响应,注册,申请专利RegisterClass(...) ;// 生产窗口 CreateWindow(.. ...

  2. 让Win32窗口程序拥有控制台窗口

    让Win32窗口程序拥有控制台窗口 首先,为什么我们有了普通窗口后还要控制台窗口呢?因为我们可以用它方便的输出调试信息,而且普通玩家看到了也会觉得很高端.如果他会输几条命令,可能他会以为自己就是黑客了 ...

  3. Win32窗口程序实例

    转自:http://blog.csdn.net/earbao/article/details/8638348 <pre name="code" class="cpp ...

  4. WinAPI入门: 第一个标准Win32窗口程序 [改进详细注释版]

    WinAPI入门: 第一个标准Win32窗口程序 下载链接: 若想立即看到本程序的运行结果,可点击EXE文件的免费下载链接; HelloWin_v1.sfx.exe;–带语音和背景音乐; 相关链接: ...

  5. java考勤程序,请为一个公司编写程序记录公司员工出勤情况

    员工可通过客户端向服务器端发送数据表示到达公司,服务端发送消息确认,统计所有员工出勤情况,存放于一个指定文件中. 用UDP做法: 服务器端: import java.io.BufferedWriter ...

  6. C语言结构体和结构体数组示例 - Win32窗口程序演示

    C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...

  7. 最简单的DX窗口程序

    一.下载DX装起来:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 二.创建一个Win32窗口 ...

  8. 一个Win32程序的进化

    作者:刘铁猛 日期:2005-12-13 关键字: Win32 API 入门 声明:如果阁下想转载,在转载的时候烦劳阁下连同在下的姓名一起转载,并向[email]bladey@tom.com[/ema ...

  9. 创建一个最简单的win32应用程序

    创建一个最简单的win32应用程序 使用的是vs2013 中文版 首先创建一个win32 应用程序 工程 也可以使用快捷键 Ctrl+Shift +N 创建的工程名字是 HelloApp 下一步 建立 ...

最新文章

  1. Fragment 和 FragmentActivity的使用
  2. Xcode8 及iOS10适配问题汇总
  3. 微信小程序项目,实现图书搜索组件完善
  4. JAVA高精度计算工具
  5. ESIM (Enhanced LSTM for Natural Language Inference)
  6. 什么是saashrm
  7. 《Python Cookbook 3rd》笔记(4.7):迭代器切片
  8. mybatis可以生成不重复的id吗_Mybatis面试题吐血总结
  9. 引擎设计跟踪(九.2) 3DS MAX 导出插件 继续
  10. 机器学习基础:逻辑回归(Machine Learning Fundamentals: Logistic Regression)
  11. MATLAB视频转图片保存
  12. 工程点点app爬虫和sign算法破解
  13. UDP包导致大量ARP报文的问题处理
  14. 售价6815万元,95后加密艺术家推出“Dream Chaser”NFT系列作品
  15. TP-LINK TL-WDN6200在Ubuntu 1804下使用
  16. BeautifulSoup里“find_all“和“findAll“的区别
  17. Thrill: 基于C++的高性能分布式批处理算法
  18. [Python中pandas实现独热编码][pd.get_dummies()函数]
  19. 【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo...
  20. 转移到ios下载安卓_转移到ios官方app下载|转移到IOS安卓版下载_v2.10.0_9ht安卓下载...

热门文章

  1. 使用restTemplate的post请求传输文件与文件数组
  2. Laravel5.6使用定时任务实现定时发邮件
  3. windows——批处理文件(.bat)详解
  4. winxp sp3专业版密匙-激活码
  5. 快速md5校验脚本linux,shell-更新文件并md5校验
  6. 第十一天堂的学习笔记Ubuntu第一篇,分区安装,设置root密码,安装五笔和VMtools
  7. Broadcast(广播)和BroadcastReceiver(广播接收器)
  8. linux取消挂载并将分区释放,linux硬盘分区:分区,格式化,挂载,取消挂载,删除分区...
  9. HTML5使用Geoloacation API检测浏览器的支持性
  10. Bentley ORD(openroads designer) 二次开发(BIM)第四节 界面设计数据绑定