Windows编程2:自己的窗口

窗口的创建

先RegisterWindow():注册
再CreateWindow():创建
最后如果想的话UpdateWindow():更新

就像一个公司一样,先注册公司,然后就可以着手创建公司了,再然后更新公司产品。

窗口过程

窗口过程是由msg(message)触发事件让窗口感应来完成任务的。

代码(别怕长,最后有妙招)

#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	WNDCLASSEX wc;//一个窗口类
	HWND hwnd;//还记得这个是什么吗?对,就是窗口句柄
	MSG Msg;//消息

	memset(&wc,0,sizeof(wc));
	wc.cbSize		 = sizeof(WNDCLASSEX);
	wc.lpfnWndProc	 = ; //上面所说的事件处理函数,现在因为这个目前还无法编译成功
	wc.hInstance	 = hInstance;//他要你传一个应用程序实例句柄
	wc.hCursor		 = LoadCursor(NULL, IDC_ARROW);//他说要个鼠标句柄
	wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);//请告诉它窗口的颜色,可以不要加1,也可以加2、加3都可以
	wc.lpszClassName = "WindowClass";//窗口类名,注意不是窗口标题、窗口名
	wc.hIcon		 = LoadIcon(NULL, IDI_APPLICATION); //他说他要一个图标
	wc.hIconSm		 = LoadIcon(NULL, IDI_APPLICATION); //emm...这个就跟上面的填一样的

/*
LoadIcon会传回一个图标句柄
LoadCursor会传回一个鼠标句柄
*/

	if(!RegisterClassEx(&wc)) {
		MessageBox(NULL, "Window Registration Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}//注册窗口,如果注册失败,则弹出对话框

	hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,//EX窗口风格
	"WindowClass",//刚才所说的窗口类名
	"Caption",//这个就是窗口标题啦
	WS_VISIBLE|WS_OVERLAPPEDWINDOW,//普通窗口风格,WS_VISIBLE它指的是窗口初始是否可见;WS_OVERLAPPEDWINDOW指的是一般窗口风格,剧透一下,将来的控件窗口就不需要了。
	CW_USEDEFAULT,CW_USEDEFAULT,//窗口左上角的xy坐标
	640,480,//窗口的宽和高,不知道为什么它不是长和宽,而是宽和高(长)
	NULL,//这个是个窗口句柄,NULL为桌面
	NULL,//HMENU昨天忘记讲了,它不仅代表了一个菜单,还是一个窗口标识,将来控件会用到
	hInstance,//填空题:HINSTANCE代表了_____,答案:应用程序实例句柄
	NULL);//附加参数(没什么卵用)
	if(hwnd == NULL) {
		MessageBox(NULL, "Window Creation Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
		return 0;
	}//与上面一样,窗口创建失败则弹出一个对话框

	while(GetMessage(&Msg, NULL, 0, 0) > 0){//获取消息Get得到
		TranslateMessage(&Msg);//翻译消息,甭管它是什么,照做就行
		DispatchMessage(&Msg);//与上面同理,要真有兴趣可以一搜
	}//~~这就是我们传说中的消息循环~~
	return Msg.wParam;
}

嘿嘿,我所说的妙招要看你有没有一款特殊的编译器一一DevC++
相信有很多人都用的是VS,那样就只能用手打代码喽😝

DevC++找到插入键,点击会弹出一个菜单,选择winmain() 自动就会有哦~

DevC++在MicrosoftStore现在卖48¥哦
所以还是老老实实打代码吧
实在太lazy的话跟作者私信吧

另外,关于WS_VISIBLE若是你实在不想选,也可以用ShowWindow(hwnd,____) 把它给显示出来哦,他也是一个隐藏窗口的好东西,在第二个参数填入SW_SHOW或者是SW_SHOWWINDOW就可以显示窗口了,填入SW_HIDE就可以隐藏窗口了,并且不是SW_MINIMISE(最小化)顺便说一下,最大化是SW_MAXIMISE,有兴趣的同志可以尝试一下(可以说是使公司让大家知道)
又是打代码!
不过没事,将来我们搞扫雷、登录系统的时候,会有更多的代码要打的!

不过作者还是手打了近三百四百多行代码
淘汰一批畏惧困难的(逃)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值