Win32窗口程序实例
转自:http://blog.csdn.net/earbao/article/details/8638348
<pre name="code" class="cpp">#include <windows.h>
//Win32窗口程序实例
//声明消息处理函数
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
char szClassName[]="windowsclass";
char szAppTitle[]="WinApi窗口实例";
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{ HWND hMainWnd;//窗口句柄 MSG msg;//消息 WNDCLASS winclass;//窗口结构体 if(!hPrevInstance) { winclass.style=CS_HREDRAW|CS_VREDRAW;//窗口风格 winclass.lpfnWndProc=WndProc;//注册消息处理函数 winclass.cbWndExtra=0;//附加参数 winclass.cbClsExtra=0;//附加参数 winclass.hInstance=hInstance;//当前应用程序句柄 winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载窗口图标 winclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口光标 winclass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//设置窗口背景为浅灰色 winclass.lpszMenuName=NULL;//窗口菜单为空 winclass.lpszClassName=szClassName;//给窗体结构体命名 RegisterClass(&winclass);//注册窗口 } hMainWnd=CreateWindow(szClassName,//窗口结构体名称 szAppTitle,//窗口标题 WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口 CW_USEDEFAULT,CW_USEDEFAULT,//x,y坐标 CW_USEDEFAULT,CW_USEDEFAULT,//窗口的宽度,高度 NULL,NULL,hInstance,NULL); ShowWindow(hMainWnd,SW_SHOWNORMAL);//显示窗口 UpdateWindow(hMainWnd);//更新窗口,最大化 //建立消息循环 while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); /*函数功能:该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage或PeekMessage时被读出*/DispatchMessage(&msg);/*函数功能:该函数分发一个消息给窗口程序。通常消息从GetMessage函数获得。消息被分发到回调函数(过程函数),作用是消息传递给操作系统,然后操作系统去调用我们的回调函数,也就是说我们在窗体的过程函数中处理消息。*/} return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lParam)
{ switch(message) { case WM_KEYDOWN://键盘按下 { MessageBox(hMainwnd,"键盘按下了","提示",MB_OK); break; } case WM_LBUTTONDOWN://鼠标按下 { MessageBox(hMainwnd,"鼠标按下了","提示",MB_OK); break; } case WM_RBUTTONDOWN://鼠标右键按下 { MessageBox(hMainwnd,"鼠标右键按下了","提示",MB_OK); break; } case WM_DESTROY://关闭窗口 { MessageBox(hMainwnd,"关闭窗口了","提示",MB_OK); PostQuitMessage(0); /*当点击窗口右上角的关闭时,Windows就会把窗口从系统里删除,这时就会发出消息WM_DESTROY给窗口消息处理函数WindowProc,WindowProc收到这条消息后,最需要做的一件事情就是调用PostQuitMessage发出退出消息,让消息循环结束。*///exit(0); //ExitProcess(0); break; } default: break; } return DefWindowProc(hMainwnd,message,wParam,lParam); }
=============================================================================
// 内容:一个基本的Win32程序框架
#include <windows.h>
//#include <windowsx.h>
//函数声明
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam ); //函数:WinMain() 功能:Win32应用程序入口函数。创建主窗口,处理消息循环
int PASCAL WinMain( HINSTANCE hInstance, //当前实例句柄 HINSTANCE hPrevInstance, //前一个实例句柄 LPSTR lpCmdLine, //命令行字符 int nCmdShow) //窗口显示方式
{ MSG msg; //创建主窗口 if ( !InitWindow( hInstance, nCmdShow ) ) return FALSE; //进入消息循环: //从该应用程序的消息队列中检取消息,送到消息处理过程, //当检取到WM_QUIT消息时,退出消息循环。 while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } //程序结束 return msg.wParam;
}
//函数:InitWindow()
//功能:创建窗口。
static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{ HWND hwnd; //窗口句柄 WNDCLASS wc; //窗口类结构 //填充窗口类结构 wc.style = CS_VREDRAW | CS_HREDRAW; wc.lpfnWndProc = (WNDPROC)WinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "EasyWin"; RegisterClass( &wc ); //注册窗口类 hwnd = CreateWindow( //创建主窗口 "EasyWin", //窗口类名称 "一个基本的Win32程序", //窗口标题 WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型 100, //窗口位置的x坐标 100, //窗口位置的y坐标 400, //窗口的宽度 300, //窗口的高度 NULL, //父窗口句柄 NULL, //菜单句柄 hInstance, //应用程序实例句柄 NULL ); //窗口创建数据指针 if( !hwnd ) return FALSE; //显示并更新窗口 ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); return TRUE;
}
//函数:WinProc()
//功能:处理主窗口消息
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam )
{ switch( message ) { case WM_KEYDOWN://击键消息 switch( wParam ) { case VK_ESCAPE: MessageBox(hWnd,"ESC键按下了!","Keyboard",MB_OK); break; } break; case WM_RBUTTONDOWN://鼠标消息 { MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK); break; } case WM_PAINT://窗口重画消息 { char hello[]="你好,我是EasyWin !"; HDC hdc; PAINTSTRUCT ps; hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄 SetTextColor(hdc, RGB(0,0,255)); //设置文字颜色 TextOut( hdc, 20, 10, hello, strlen(hello) );//输出文字 EndPaint( hWnd, &ps ); //释放资源 break; } case WM_DESTROY://退出消息 PostQuitMessage( 0 );//调用退出函数 break; } //调用缺省消息处理过程 return DefWindowProc(hWnd, message, wParam, lParam);
}
Win32窗口程序实例相关推荐
- WinAPI入门: 第一个标准Win32窗口程序 [改进详细注释版]
WinAPI入门: 第一个标准Win32窗口程序 下载链接: 若想立即看到本程序的运行结果,可点击EXE文件的免费下载链接; HelloWin_v1.sfx.exe;–带语音和背景音乐; 相关链接: ...
- 让Win32窗口程序拥有控制台窗口
让Win32窗口程序拥有控制台窗口 首先,为什么我们有了普通窗口后还要控制台窗口呢?因为我们可以用它方便的输出调试信息,而且普通玩家看到了也会觉得很高端.如果他会输几条命令,可能他会以为自己就是黑客了 ...
- 第一个 Win32 窗口程序
第一个 Win32 窗口程序 程序骨架 int WinMain(){ // 设计窗口外观及交互响应,注册,申请专利RegisterClass(...) ;// 生产窗口 CreateWindow(.. ...
- 我的第一个win32窗口程序------------记录
// Myday03.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "Myday03.h" int API ...
- java窗口程序实例_Java Swing快速构建窗体应用程序
以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...
- C#调用win32 api程序实例
1.声明static extern 方法,使用DllImport特性 class MyClass{[DllImport("kernel32", SetLastError = tru ...
- C语言结构体和结构体数组示例 - Win32窗口程序演示
C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...
- 最简单的DX窗口程序
一.下载DX装起来:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 二.创建一个Win32窗口 ...
- VS创建 Win32 应用程序(实现窗口的创建)
VS创建 Win32 应用程序(实现窗口的创建)(二) 程序框架如下: 一.VS演示流程 打开VS----文件----新建----项目----Windows 桌面应用程序 二.生成代码:(大部分函数在 ...
最新文章
- MIT+IBM同时利用AI探索神经科学,让脑科学研究如虎添翼
- 学习Linux的一些建议
- linux源代码安装程序
- Python爬虫淘宝商品详情页价格、类似数据
- 【GPU编程】体绘制传输函数-分类(Volume Rendering Transfer function:Pre- VS Post-Classification)
- 今日拷问:侬是什么垃圾!
- 190314每日一句
- 【sql的四大连接】
- 144项大神级ppt制作技术
- 竞品分析 | 不背单词、百词斩
- Selenium04-selenium中的Xpath元素定位方法爬虫实践
- 手机开USB热点给电脑使用失败
- 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
- linux内核编程(hello world示例程序)
- mysql的cpu使用率突然增高_mysql cpu使用率过高解决方法
- 联想台式计算机g50500i,联想台式电脑的价格及配置
- 二分法算法复杂度简化_让我们简化算法的复杂性!
- PV、UV、IP含义及关系
- RSD 教程 —— §3.3 观察图像
- js 数组遍历方法详解(map、filter、find、findIndex、reduce)