关于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);
}
}