关于Windows程序设计的初步认识

2020.02.01

今年这个春节过得实在是挺特别的,冠状病毒又来和我们“约会”了,并且又是在这个普天中国人同庆的美好时刻……这次它来的依然是那么的匆忙,我们甚至没时间给它取一个国际化的名字,只能叫它新型冠状病毒……玩笑话是这么讲,但是真心地希望这次能够是我们最后一次“请”它来中国来做客,大家都能够涨一点记性,为了个人的口腹之欲让整个国家为你买单,难道真的不会臊得慌吗?于是作为一名平平凡凡的学生,我一定安安静静的在家“躺尸”,不给大家添麻烦!

接下来
关于Windows程序设计的初步认识

一、认识

其实在2019年的时候我就开始自己学习关于Windows程序设计的相关内容了,但是之前我不知道他的学术名称叫做 windows程序设计,仅仅知道MFC这个还是因为自己上学期上了一门叫做计算机图形学的课程。但是结果是自己已经有快有两个月没有再看相关的内容了,所以从今天开始立下一个flag:我要在这学期开学(3.1)之前学完MFC的内容。
先来一段代码
#include <windows.h>//这个头文件一定要加上

//牢记入口函数不再是标准 C/C++ 的 int mian() 而是WinMian() 

int WINAPI/*说明参数如何传递*/ WinMain(HINSTANCE hInstance,/*实例句柄*/
							           HINSTANCE HPrevInstsnce,/*前一个实例句柄(但是已经被淘汰了,
							                                     可是因为微软的规则这个参数还是必须写上)*/
								       PSTR szCmdLine,//这个参数其实不怎么用到
								       int iCmdShow)
{
	MessageBox(NULL, TEXT("Hello Windows !"), TEXT("Hello World !"), MB_OK);//SDK API函数。
	return 0;
}


#######上面这段代码除了WinMain()里面的四个参数,稍微有一点难以外其他的也没有什么了,主要是没有剩下什么代码了。

#include<windows.h>

LONG WINAPI WndProc(HWND ,UINT ,WPARAM ,LPARAM);//窗口回调函数

int WINAPI WinMain(HINSTANCE hInstance,
				   HINSTANCE hPrevInctance,
				   LPSTR ipszCmdLine,
				   int nCmdShow)
{
	HWND hwnd;//窗口句柄
	MSG msg;//消息

	//1、设计一个窗口类
	WNDCLASS wc;//虽然WNDCLASS被叫做窗口类,但是因为整个Windows编程都是采用的C语言,所以它其实是一个结构体。
	wc.style=0;//默认窗口格式
	wc.lpfnWndProc=(WNDPROC)WndProc;//窗口过程---------有点问题,先注释掉
	wc.cbClsExtra=0;//窗口类额外数据
	wc.cbWndExtra=0;//窗口额外数据
	wc.hInstance=hInstance;//实例句柄赋值
	wc.hIcon=LoadIcon(NULL,IDI_WINLOGO);//窗口图标
	wc.hCursor=LoadCursor(NULL,IDC_ARROW);//鼠标的形状函数
	wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);//窗口背景
	wc.lpszMenuName=NULL;//菜单名
	wc.lpszClassName=TEXT("myWndClass");//窗口名字

	//2、注册窗口类
	RegisterClass(&wc);

	//3、创建窗口
	hwnd=CreateWindow(TEXT("myWndClass"),
		TEXT("Hello SDK APPlication"),
		WS_OVERLAPPEDWINDOW,/*窗口样式*/
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		CW_USEDEFAULT,
		NULL,
		NULL,
		hInstance,
		NULL);

	//4、显示与更新窗口

	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);

	//5、消息循环

	while(GetMessage(&msg,NULL,0,0))//从消息循环中取得消息
	{
		TranslateMessage(&msg);//翻译消息,主要翻译的是键盘上传来的消息---将键盘上的扫描码转换成ASCALL码
		DispatchMessage(&msg);//转移到窗口过程
	}
}
LONG WINAPI WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;//dc句柄主要用于绘画
	//对各种消息进行处理
	switch(message)
	{
	case WM_PAINT:
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	return DefWndProc(hwnd,message,wParam,lParam);

	}

}
上面这段代码就是创建了一个消息对话窗口,还是最基础的消息对话窗口。从上面这一段代码就可以看出来Windows编程确实不简单。所以为了方便你我他,后来就有了上手简单的操作---明天再见!
posted @ 2020-02-01 21:57  lisui  阅读(250)  评论(0编辑  收藏  举报