|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qwerdfb2418 于 2015-3-23 13:36 编辑
- /*基本窗口模型根据小甲鱼教程编写(注释自己加的)*/
- /*窗口的诞生:窗口类结构-注册窗口类-创建窗口实例-显示窗口-更新窗口(不可以忽略)-消息循环*/
- #include<Windows.h>//Windows编程
- LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//回调函数
- int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
- {
- static TCHAR szAppName[]=TEXT("my windows");//定义窗口类名字
- HWND hwnd;//窗口的句柄(句柄是一个特殊的指针)
- MSG msg;//消息机制
- WNDCLASS wndclass;//窗口类结构
- /*Windows的窗口都是基于窗口类创建的*/
- wndclass.style=CS_HREDRAW|CS_VREDRAW;//调整高度、宽度重绘窗口(注:无法重绘也可调整窗口,但是调整后文字位置不改变)
- wndclass.lpfnWndProc=WndProc;//指定窗口过程
- wndclass.cbClsExtra=0;//额外空间一般为0
- wndclass.cbWndExtra=0;//额外空间一般为0
- wndclass.hInstance=hInstance;//句柄,与winmain第一个参数对应
- wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//为基于该窗口类的窗口设定一个图标,此为普通图标
- wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//为基于该窗口类的窗口设定一个鼠标指针
- wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//whitebrush为背景颜色,可以更改
- wndclass.lpszMenuName=NULL;//菜单名字(本程序没有菜单,所以为空)
- wndclass.lpszClassName=szAppName;//窗口类的名字,对应第7行
- /*下边为注册*/
- if(!RegisterClass(&wndclass))//判断是否是非Windows系统,如果是则提示无法运行并退出
- {
- MessageBox(NULL,TEXT("这个程序在Windows才能执行!"),szAppName,MB_ICONERROR);
- return 0;
- }
- /*丰富更多个性化特征,下段结束后实例已经诞生*/
- hwnd=CreateWindow(szAppName,//窗口类名称(基于哪一个窗口类)
- TEXT("鱼c工作室"),//窗口标题
- WS_OVERLAPPEDWINDOW,//窗口风格(也称窗口格式)
- CW_USEDEFAULT,//初始x坐标(这里使用的都是默认,下边的三个也一样)
- CW_USEDEFAULT,//初始y坐标
- CW_USEDEFAULT,//初始x方向尺寸
- CW_USEDEFAULT,//初始y方向尺寸
- NULL,//父窗口句柄
- NULL,//窗口菜单句柄
- hInstance,//程序实例句柄
- NULL);//创建参数
- /*扩展:CS类风格选项,CW创建窗口选项,DT文本绘制选项,IDI图标的ID号,
- IDC光标的ID号,MB消息框选项,SND声音选项,WM窗口消息,WS窗口风格*/
- ShowWindow(hwnd,iCmdShow);//展示此窗口(将窗口显示出来)
- UpdateWindow(hwnd);//更新窗口
- /*消息队列的三点补充:1.消息队列是FIFO的形式(先进先出)2.特例:WM_PAINT,WM_TIMER,WM_QUIT,在消息队列最后
- 3.消息分为队列化消息和非队列化消息*/
- /*下为消息循环*/
- while(GetMessage(&msg,NULL,0,0))//通过此循环获得消息,若返回值为0则退出(WM_QUIT),&msg为指针,
- {
- 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_PAINT://绘制窗口
- hdc=BeginPaint(hwnd,&ps);//绘画初始化
- GetClientRect(hwnd,&rect);//获得客户区位置坐标信息
- DrawText(hdc,TEXT("大家好,这是我的第一个窗口程序!"),-1,&rect,
- DT_SINGLELINE|DT_CENTER|DT_VCENTER);//一行,居中,垂直居中
- EndPaint(hwnd,&ps);
- return 0;
- //此段后加
- case WM_LBUTTONDOWN://左键按下
- MessageBox(NULL,TEXT("哎呀,我被按了一下"),TEXT("啊,舒服"),MB_OK);
- return 0;
- case WM_DESTROY://关闭的消息,下文可以部署代码(例如:保存、退出)注:不可挽回窗口(详见小甲鱼视频)
- PostQuitMessage(0);//发送退出消息
- return 0;
- }
- return DefWindowProc(hwnd,message,wParam,lParam);//操作系统以默认方式处理消息
- }
- /*程序结束*/
复制代码 就是这些了 |
评分
-
查看全部评分
|