c语言写的简单Windows窗口
来源:互联网 发布:access数据库表的关联 编辑:程序博客网 时间:2024/05/21 04:39
这是一个用c语言写的简单的windows窗口的创建,以及添加了一个按钮显示功能。
#include
const char g_szClassName[] = "myWindowClass"; //注册窗口类
// Step 5: the Window Procedure
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)//处理信息
{
switch(msg)
{
case WM_LBUTTONDOWN:
{
char szFileName[MAX_PATH];
HINSTANCE hInstance = GetModuleHandle(NULL);
GetModuleFileName(hInstance, szFileName, MAX_PATH);
MessageBox(hwnd, szFileName, "This program is:", MB_OK | MB_ICONINFORMATION);
}
break; //添加按钮的处理
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(
HINSTANCE hInstance, //程序可执行的句柄(.exe)
HINSTANCE hPrevInstance, //取值为NULL
LPSTR lpCmdLine, //命令行参数指定的一个单字符串
int nCmdShow //将要传递给showwindow()的整数) //程序开始执行的入口,以及输入的参数(主程序)
{
WNDCLASSEX wc;
HWND hwnd;
MSG Msg;
//Step 1: Registering the Window Class
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = NULL;
wc.lpszClassName = g_szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if(!RegisterClassEx(&wc))
{
MessageBox(NULL, "Window Registration Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 2: Creating the Window
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
g_szClassName,
"The title of my window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 340, 220,
NULL, NULL, hInstance, NULL);
if(hwnd == NULL)
{
MessageBox(NULL, "Window Creation Failed!", "Error!",
MB_ICONEXCLAMATION | MB_OK);
return 0;
}
// Step 3:show and dedate the window
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
// Step 4: The Message Loop
while(GetMessage(&Msg, NULL, 0, 0) > 0)
{
TranslateMessage(&Msg); // 翻译消息
DispatchMessage(&Msg); //撤去消息
}
return Msg.wParam; //终止应用
}
windows编程中至少需要两个函数:WinMain() (windows 主程序),WndProc() (窗口过程函数)
Dos与Windows驱动机制的区别:
DOS程序主要使用顺序的,过程驱动的程序设计方法。顺序的,过程驱动的程序有一个明显的开始,明显的过程及一个明显的结束,因此程序能直接控制程序事件或过程的顺序。虽然在顺序的过程驱动的程序中也有很多处理异常的方法,但这样的异常处理也仍然是顺序的,过程驱动的结构。
而Windows的驱动方式是事件驱动,就是不由事件的顺序来控制,而是由事件的发生来控制,所有的事件是无序的,所为一个程序员,在你编写程序时,你并不知道用户先按哪个按纽,也不知道程序先触发哪个消息。你的任务就是对正在开发的应用程序要发出或要接收的消息进行排序和管理。事件驱动程序设计是密切围绕消息的产生与处理而展开的,一条消息是关于发生的事件的消息。
- c语言写的简单Windows窗口
- 【窗口编程】一个简单的C语言窗口程序
- C语言写的简单病毒程序
- 自己写的C语言简单万年历
- windows 系统 C语言写PHP简单扩展
- C语言Windows程序设计->第三天->属于自己的窗口
- linux下c语言写的简单的贪吃蛇
- C语言写的一个简单的计算器
- C语言所写的简单的贪吃蛇代码
- C语言写的简单的单向链表
- C语言写的简单的定时关机程序
- C语言写的仿WINDOWS 界面计算器源码
- Linux C语言写的超级简单端口扫描器
- 用C语言写一个简单的通讯录
- c语言写了一个简单的正弦波函数
- c语言写了一个简单的正弦波函数
- C语言写的一个简单文件加密程序
- C语言实现简单的分级别写日志程序
- MySQL锁机制详解及死锁处理方式
- 蓝桥杯 大数乘法
- 网络json解析
- NTOP与RouterOS结合实现网络流量监控
- Android数据解析:markdown解析方式
- c语言写的简单Windows窗口
- Java面试宝典系列之基础排序算法
- 第4章 返回结果的HTTP状态码 HTTP协议常用的状态码
- 读《古代牛人也买不起一线城市房 曾国藩租房半生》有感
- 集合的默认初始容量、加载因子、扩容增量
- Android ViewGroup事件分发机制
- Maven 批量打子类包
- Linux中找这个命令找了2年!
- Android网络请求框架:Retrofit入门