119.WIN32窗口原理
#include <Windows.h> //处理消息的回调函数
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hpreinstance, PSTR szcmdline, int icmdshow)
{
//设置窗口的名字
static TCHAR szappname[] = TEXT("mywindow"); //窗口类
WNDCLASS wndclass;
//风格
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpszClassName = szappname;//设置名字
wndclass.lpszMenuName = NULL;
wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//设置背景
wndclass.lpfnWndProc = WndProc;//设置回调函数处理窗口
wndclass.cbClsExtra = wndclass.cbWndExtra = ;//拓展
wndclass.hInstance = hinstance;//窗口句柄
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);//载入图标
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);//载入鼠标风格 //通过名字,注册窗口
if (!RegisterClass(&wndclass))
{
MessageBoxA(, "窗口注册失败", "提示", );
return ;
} //通过名字,创建窗口
HWND hwnd = CreateWindow(szappname,//窗口名字
TEXT("窗口"),//窗口标题
WS_OVERLAPPEDWINDOW,//窗口风格
CW_USEDEFAULT,//默认显示位置x
CW_USEDEFAULT,//默认显示位置y
CW_USEDEFAULT,//默认宽度
CW_USEDEFAULT,//默认高度
NULL,//子窗口
NULL,//子菜单
hinstance,//窗口句柄
NULL); ShowWindow(hwnd, SW_SHOW);
UpdateWindow(hwnd);//显示并更新
MSG msg;//消息
//消息循环(GetMessage 创建事件 TranslateMessage DispatchMessage响应事件)
while (GetMessage(&msg,NULL,,))
{
TranslateMessage(&msg);
//调用回调函数
DispatchMessage(&msg);
} return msg.wParam;
} LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
//设备环境
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message)
{
case WM_LBUTTONDOWN:
MessageBoxA(, "按下鼠标左键", "提示", );
break;
case WM_RBUTTONDOWN:
MessageBoxA(, "按下鼠标左键", "提示", );
break;
case WM_CLOSE:
if (MessageBoxA(, "是否关闭窗口", "提示", ) == )
{
//关闭窗口,发送WM_DESTROY消息
DestroyWindow(hwnd);
}
else
{
return ;
}
break;
case WM_DESTROY:
MessageBoxA(, "已成功关闭", "提示", );
exit();
break;
default:
break;
}
return DefWindowProc(hwnd, message, wparam, lparam);
}
119.WIN32窗口原理的更多相关文章
- 第一个手写Win32窗口程序
第一个手写Win32窗口程序 一 Windows编程基础 1 Win32应用程序的基本类型 1.1 控制台程序 不需要完善的Windows窗口,可以使用DOS窗口 的方式显示. 1.2 Win32窗口 ...
- TCP面试题之滑动窗口原理
TCP 滑动窗口 作用: 1. 提供TCP可靠性:对发送的数据进行确认 2. 流量控制:窗口大小随链路变化 一.TCP窗口机制 TCP中窗口大小是指tcp协议一次传输多少个数据.因为TCP是一个面向连 ...
- WIN32窗口程序
// Win32.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "Win32.h" void TRACE( ...
- Win32窗口消息机制 x Android消息机制 x 异步执行
如果你开发过Win32窗口程序,那么当你看到android代码到处都有的mHandler.sendEmptyMessage和 private final Handler mHandler = new ...
- 如何在Console下面生成一个WIN32窗口
一个小挑战? VS2017里面,新建一个控制台工程,输入名字(你不需要也成,有默认的),得到一个控制台工程. 好了,生成的代码,如下: // Win32InConsole.cpp : This fil ...
- Win32窗口框架
Win32窗口框架 WindowClass 单例,负责窗口初始化注册和取消注册: 负责提供静态方法: 放在Window类内部,方便初始化时,wndProc(HandleMsgSetup)的赋值: cl ...
- Win32 - 窗口
Win32 - 窗口 目录 Win32 - 窗口 前言 流程图 创建项目 VS MinGW Win32API字符串 Unicode 和 ANSI 函数 TCHAR WinMain:Win32 Appl ...
- 解决WIN32窗口不响应WM_LBUTTONDBLCLK消息
原文链接: http://www.cnblogs.com/xukaixiang/archive/2012/05/27/2520059.html 今天在做一个软件时,发现win32创建的窗体不能响应WM ...
- 模态窗口原理及注意事项--http://www.alisdn.com/wordpress/?p=53
前言 在开发Windows引用程序的时候,在一些需要用户确认,或者提示用户注意的场合,经常使用模态对话框,或者叫模态窗口.在绝大多数情况下,模态窗口给开发人员带来了极大的便利,并且在某些应用上有不可替 ...
随机推荐
- Scrapy请求传参
scrapy.Request(url=url, callback=self.parse_item, meta={'item': item}, headers=headers) url: 要请求的地址 ...
- blkid---对系统块设备信息查询
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询.blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型.LABEL.UUID等信息进行查询.要使用这个命令必须 ...
- Linux下yum安装ffmpeg和使用
本文属于转载文章:转载地址是http://www.cnblogs.com/dennisit/archive/2012/12/27/2835089.html 使用Yum安装ffmpeg 打开 vi /e ...
- 【转】Flash AS3.0 中的自定义事件
原文 http://www.cnblogs.com/acpp/archive/2010/10/19/1855670.html package { import flash.events.Event; ...
- 【Uva 1627】Team them up!
[Link]: [Description] 给你n个人; 有一些人之间有认识关系 a认识b,b不一定认识a 让你把这n个人分成两组 使得这两组中的每一组: 组内的人与人之间都相互认识. 并且,使得两组 ...
- openfire 开发遇到的些问题
openfire的 jid 账户名 + '@" + 你的域名 可是当你的账户名中 有大拼音的 时候 就会变成小写 比如 Test , jid = tes ...
- 转:关于ios 推送功能的终极解决
刚刚做了一个使用推送功能的应用 遇到了一些问题整的很郁闷 搞了两天总算是弄明白了 特此分享给大家 本帖 主要是针对产品发布版本的一些问题 综合了网上一些资料根据自己实践写的 不过测试也可以看看 首先要 ...
- python-打开网页
最近一直想通过python来实现网页的操作.因为想把自己vimrc的配置直接通过脚本来实现.比较理想的情况下,就是通过一个脚本,把自己需要的一些资源直接从网上下载下来,然后再对下载的资源进行安装等操作 ...
- rtsp和sdp协议简介
RTSP是由Real network 和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议. 实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体,如音频和视频.尽管 ...
- DG 参数详解
1.与角色无关的参数 ◆ DB_UNIQUE_NAME:数据库唯一名.对于物理standby,DB_NAME必须相同,对于逻辑standby,DB_NAME可以不同,所以在10g中引入DB_UNIQU ...