第1课、创建最简窗口程序
来源:互联网 发布:程序员教程第四版pdf 编辑:程序博客网 时间:2024/06/09 15:59
SimplestWindow程序说明
一、功能实现
最简窗口程序需要实现的功能:
1.窗口风格:窗口具有应用程序图标,标题栏,最大、最小和关闭按钮。
2.运行程序后窗口程序正常显示,点击窗口的关闭按钮,程序正常关闭。
二、核心组织
其核心组织构成如下:
1. 程序入口函数(必不可少)
1.1设计、注册窗口类,创建、显示、更新窗口
1.2.消息循环机制
2. 程序窗口过程函数(必不可少)
1.对WM_CLOSE消息进行消息响应(响应窗口右上角的关闭按钮消息)
2.对WM_DESTROY消息进行相应(正式退出程序)
3.对其他消息进行缺省过程处理(必不可少)
三、代码编写
#include <windows.h>
//--1.窗口过程函数原型声明--//
LRESULT CALLBACK winproc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
//--2.程序入口函数--//
int WINAPI WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd
)
{
//--2.1 设计窗口类--//
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(COLOR_ACTIVEBORDER);
wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=winproc;
wndcls.lpszClassName="Window";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
//--2.2 注册窗口类--//
RegisterClass(&wndcls);
//--2.3 创建窗口--//
HWND hwnd;
hwnd=CreateWindow("Window","SimplestWindow",WS_OVERLAPPEDWINDOW,0,0,600,400,
NULL,NULL,hInstance,NULL);
//--2.4 显示窗口--//
ShowWindow(hwnd,SW_SHOWNORMAL);
//--2.5 更新窗口--//
UpdateWindow(hwnd);
//--2.6 消息循环--//
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
//--3.窗口过程函数定义--//
LRESULT CALLBACK winproc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
程序运行结果如下:
//--备注:作者太懒了,什么都没写!--//
- 第1课、创建最简窗口程序
- 第14章:创建窗口与applet程序
- 手动创建窗口程序
- Windows创建窗口程序
- 创建程序窗口
- 第1课 创建第一个 Ultimate Grid 程序
- Delphi使用Windows API 创建最基本的窗口程序Hello,Windows演示
- VS生成的最简WIN32窗口程序
- 第1章,1_创建一个空白窗口
- 创建窗口的例子程序
- win32程序窗口的创建
- win32程序窗口的创建
- vs创建无窗口程序
- 创建一个win32窗口程序
- 基于Win32Api创建窗口程序
- 创建一个窗口程序JFrame
- JAVA编程思想:第13章 创建窗口和程序片
- java编程思想(第四版)_第13章 创建窗口和程序片
- codeforces 817C Really Big Numbers 二分
- Hibernate和 Mybatis 对比
- python笔记(tkinter)(四)
- 我的第一个博客(浅谈setTimeout)
- 白鹿原(小说)------情色部分大盘点
- 第1课、创建最简窗口程序
- 每天学一点Swift----泛型(二)
- C++ STL--map容器
- android 右边滑动字母索引使用
- 前台js获取到后台json数据,eval解析json后,日期(object)对象转换为date日期格式显示
- 170615 逆向-10000000
- 高级软件工程考察报告
- ListView控件的使用
- webview收不到服务端的cookie