用windowsapi来建立一个窗口
#include <iostream>
#include <Windows.h> HINSTANCE g_hInstace = ;
LRESULT CALLBACK WindowProc(HWND hWnd,
UINT nMsg,
WPARAM wParam,
LPARAM lParam)
{
switch(nMsg)
{
case WM_QUIT:
PostQuitMessage();
break;
}
return DefWindowProc(hWnd,nMsg,wParam,lParam);
} BOOL RegisterWnd(LPCWSTR lpszClassName,WNDPROC WndProc)
{
WNDCLASSEX wcx={};
wcx.cbSize=sizeof(WNDCLASSEX);
wcx.cbClsExtra=;//int cbClsExtra 给类而外预留的空间默认设为0 当你需要的时候自然会明白它的用处。
wcx.cbWndExtra=;//int cbWndExtra 同上
wcx.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wcx.hCursor=NULL;//HCURSOR hCursor 该窗口光标形式的句柄
wcx.hIcon=NULL;//HICON hIcon 该窗口的图标的句柄
wcx.hIconSm=NULL;//HICON hIconSm这个图标显示的是窗口在任务栏处显示的图标。
wcx.hInstance=g_hInstace;//HINSTANCE hInstance 该窗口的句柄 //WNDPROC lpfnWndProc 这个应该是该结构中最重要的一个成员,类型WNDPROC的实质是一个指向函数的长整类型的指针。
//也就是说我们定义一个窗口,当鼠标在该窗口上操作,或键盘按键时,该窗口收到了这个消息。此时他的lpfnWndProc指向一个回调函数,
//(回调函数见下方讲解)该窗口将参数送到回调函数,由回调函数执行动作,之后则可以对动作作出相应。
wcx.lpfnWndProc=WndProc; wcx.lpszClassName=lpszClassName;//LPCTSTR lpszClassName该类的名字。即给该类起一个名字。
wcx.lpszMenuName=NULL;
wcx.style=CS_HREDRAW | CS_VREDRAW;//定义窗口的风格,style 虽然是一个无符号整数,但是他的取值,是系统定义好的一组宏变量
ATOM nAtom=RegisterClassEx(&wcx);//该函数注册在随后调用CreateWindow函数和CreateWindowEx函数中使用的窗口类。
if( == nAtom)
return FALSE;
return TRUE; } HWND CreateWnd(LPCWSTR lpszClassName,LPCWSTR lpszWindowsName)
{
HWND hWnd=CreateWindowEx(WS_EX_CLIENTEDGE,
lpszClassName,
lpszWindowsName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
g_hInstace,
NULL);
return hWnd;
} void DisplayWnd(HWND hWnd)
{
ShowWindow(hWnd,SW_NORMAL);
UpdateWindow(hWnd);
} void Message()
{
MSG nMsg={};
while(GetMessage(&nMsg,NULL,,))
{
TranslateMessage(&nMsg);
DispatchMessage(&nMsg);
}
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
if(!RegisterWnd(TEXT("WinMain"),WindowProc))
{
MessageBox(NULL,TEXT("创建窗口失败"),TEXT("Warning"),MB_YESNOCANCEL);
return ;
} HWND hWnd = CreateWnd(TEXT("WinMain"),TEXT("主窗口"));
DisplayWnd(hWnd);
Message(); return ;
} int main()
{
//HINSTANCE hInstance=HINSTANCE(100);
//WinMain(hInstance,hInstance,NULL,1);
WinMain(g_hInstace,g_hInstace,NULL,);
//WinMain(NULL,NULL,NULL,0);
return ;
};
用windowsapi来建立一个窗口的更多相关文章
- 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...
- 第二章-如何使用github建立一个HelloWorld项目,git的add/commit/push/pull/fetch/clone等基本命令用法。--答题人:杨宇杰
1.配置Git 首先在本地创建ssh 秘钥:在git bash输入: $ ssh-keygen -t rsa -C "your_email@youremail.com" eg:$ ...
- jmeter 建立一个网络服务的测试计划
如何创建一个 测试计划 测试一个网络服务. 你会 创建5个用户发送请求到一页. 同时,你会告诉用户运行测试两次. 的总数 请求用户请求(5)x(1)x(重复2次)= 10 HTTP请求. 来 建立测试 ...
- Java界面编程-建立一个可以画出图形的简单框架
引子:总共使用3个.java文件,建立一个简单界面编程的框架. 第1个文件:NotHelloWorldComponent.java //NotHelloWorldComponent.java 1 im ...
- 利用NET HUNTER建立一个自动文件下载的网络接入点
免责声明:本文旨在分享技术进行安全学习,禁止非法利用. 本文中我将完整的阐述如何通过建立一个非常邪恶的网络接入点来使得用户进行自动文件下载.整个过程中我将使用 Nexus 9 来运行Kali NetH ...
- VS下如何建立一个新的MFC程序 网络编程 课设 基于C++ MFC 连接数据库 小应用 小项目浅析展示
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8191036.html 这里不知道会不会有人是真的新手 新新手 不知道怎么 如何建立一个MFC ...
- VS2015 建立一个C++的MFC简易窗体程序项目
一开始建立的窗体工程都是带很多窗口,而且自己拉到窗体的控件,一调试就看不到了,是因为新建立工程项目时勾选了太多其他的了,这里记录分享一下建立一个单纯的窗体程序项目步骤给有需要的人也可以学习. 第一步: ...
- pywin32 创建一个窗口
import win32con,win32gui class MyWindow(): def __init__(self): #注册一个窗口类 wc = win32gui.WNDCLASS() wc. ...
- linux建立一个快捷方式,连接到另一个目录
sudo ln -s 源目录 目标快捷方式比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是sudo ln -s /home/LXBC /etc/LXBC553
随机推荐
- 【bzoj3786】星系探索
ETT模版题. 真正的Eular-Tour-Tree维护的是树的欧拉序. 由于各种原因,没人知道怎么维护欧拉序,所以我写的是个假的,维护dfs序的. 本质还是用Splay维护序列. 然后因为我常数太差 ...
- C后端设计开发 - 第3章-气功-原子锁线程协程
正文 第3章-气功-原子锁线程协程 后记 如果有错误, 欢迎指正. 有好的补充, 和疑问欢迎交流, 一块提高. 在此谢谢大家了. 童话镇 - http://music.163.com/#/m/song ...
- Keepalived高可用配置
Keepalived简介 Keepalived基于VRRP协议在服务器之间建立了主备关系,通常称之为高可用对.VRRP中文叫虚拟路由冗余协议,目的是解决静态路由的单点故障问题.高可用对之间通过IP多播 ...
- 查询 IDE 的版本 方便安装第三方的时候选择
TMD 很多第三方软件 的版本 定义 与 delphi是不一致的. 1.有的是以这个为准.
- LeetCode解题报告—— Swap Nodes in Pairs & Divide Two Integers & Next Permutation
1. Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For e ...
- poj 1088(记忆化搜索)
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 88560 Accepted: 33212 Description ...
- Mayavi入门
环境,win7/10 64位, python3.x 1,安装 Mayavi4.6 原装的pip下载奇慢,先更换一下源,豆瓣的更新要比清华的快 首先在window的文件夹窗口输入 : %APPDATA% ...
- SGU 261. Discrete Roots
给定\(p, k, A\),满足\(k, p\)是质数,求 \[x^k \equiv A \mod p\] 不会... upd:3:29 两边取指标,是求 \[k\text{ind}_x\equiv ...
- golang实现mysql数据库备份
背景 navicat是mysql可视化工具中最棒的,但是,在处理视图的导入导出方面,它是按照视图名称的字母顺序来处理的,若视图存在依赖,在导入过程中就会报错.前面已经用python写了一个,但在使用过 ...
- OOX之间的关系
OOA,OOD,OOP三者关系OOA的分析结果可以作为OOD的需求模型OOD的设计结果作为OOP的指导蓝图OOP负责最终实现目标系统