Windows程序设计--第一个窗口程序
2014-02-21 21:48
363 查看
第一个建立一个窗口的程序,也是windows建立窗口的核心代码,具体代码注释,已在下面代码中标注:
#include <tchar.h>
#include <windows.h>
LRESULT CALLBACK WinProc(HWND hWnd, UINT UMsg, WPARAM wParam, LPARAM lParam) //窗口回调函数
{
switch (UMsg)
{
case WM_CLOSE: //关闭窗口触发
{
::DestroyWindow(hWnd); //发送WM_DESTROY给消息队列
}
break;
case WM_DESTROY:
{
::PostQuitMessage(0); //发送出WM_QUIT消息,
}
break;
}
//处理默认消息
return ::DefWindowProc(hWnd, UMsg, wParam, lParam);
}
//__in代表参数是输入参数,__out代表参数是输出参数
int WINAPI WinMain( __in HINSTANCE hInstance, //当前应用程序实例
__in_opt HINSTANCE hPrevInstance, //先前应用程序实例,在Win32中始终为NULL
__in LPSTR lpCmdLine, //命令行参数
__in int nShowCmd //显示方式
)
{
TCHAR pszClassName[] = _T("First Windows"); //窗口类名
WNDCLASSEX wcex; //定义一个窗口类
wcex.cbSize = sizeof(WNDCLASSEX); //窗口类大小
wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口风格
wcex.lpfnWndProc = WinProc; //窗口回调函数
wcex.cbClsExtra = 0; //窗口类额外参数,一般为0
wcex.cbWndExtra = 0; //窗口类额外参数,一般为0
wcex.hInstance = hInstance; //窗口类实例
wcex.hIcon = (HICON)::LoadIcon(NULL, IDI_APPLICATION); //窗口上的小图标,如果使用系统,LoadIcon第一个参数为NULL
wcex.hCursor = (HCURSOR)::LoadCursor(NULL, IDC_ARROW); //窗口中的光标样式
wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); //窗口背景色
wcex.lpszMenuName = NULL; //窗口菜单,没有菜单,为NULL
wcex.lpszClassName = pszClassName; //窗口类名
wcex.hIconSm = (HICON)::LoadIcon(NULL, IDI_APPLICATION); //这里的图标一般没有用,一般和hIcon相同
bool ret = ::RegisterClassEx(&wcex); //注册窗口类
if (ret == NULL)
{
::MessageBox(NULL, _T("注册窗口失败"), _T("提示框"), MB_OK);
return -1;
}
//创建窗口
HWND hWnd = ::CreateWindowEx(0, pszClassName, _T("First Windows!"), \
WS_VISIBLE| WS_OVERLAPPEDWINDOW ,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance, NULL);
if (hWnd == NULL)
{
::MessageBox(NULL, _T("创建窗口失败"), _T("提示框"), MB_OK);
return -1;
}
//显示和更新窗口
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
MSG msg;
//消息循环
while (GetMessage(&msg, NULL, NULL,NULL)) //当接受WM_QUIT消息,消息队列退出
{
::TranslateMessage(&msg); //翻译消息
::DispatchMessage(&msg); //路由消息给OS
}
return 0;
}
#include <tchar.h>
#include <windows.h>
LRESULT CALLBACK WinProc(HWND hWnd, UINT UMsg, WPARAM wParam, LPARAM lParam) //窗口回调函数
{
switch (UMsg)
{
case WM_CLOSE: //关闭窗口触发
{
::DestroyWindow(hWnd); //发送WM_DESTROY给消息队列
}
break;
case WM_DESTROY:
{
::PostQuitMessage(0); //发送出WM_QUIT消息,
}
break;
}
//处理默认消息
return ::DefWindowProc(hWnd, UMsg, wParam, lParam);
}
//__in代表参数是输入参数,__out代表参数是输出参数
int WINAPI WinMain( __in HINSTANCE hInstance, //当前应用程序实例
__in_opt HINSTANCE hPrevInstance, //先前应用程序实例,在Win32中始终为NULL
__in LPSTR lpCmdLine, //命令行参数
__in int nShowCmd //显示方式
)
{
TCHAR pszClassName[] = _T("First Windows"); //窗口类名
WNDCLASSEX wcex; //定义一个窗口类
wcex.cbSize = sizeof(WNDCLASSEX); //窗口类大小
wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口风格
wcex.lpfnWndProc = WinProc; //窗口回调函数
wcex.cbClsExtra = 0; //窗口类额外参数,一般为0
wcex.cbWndExtra = 0; //窗口类额外参数,一般为0
wcex.hInstance = hInstance; //窗口类实例
wcex.hIcon = (HICON)::LoadIcon(NULL, IDI_APPLICATION); //窗口上的小图标,如果使用系统,LoadIcon第一个参数为NULL
wcex.hCursor = (HCURSOR)::LoadCursor(NULL, IDC_ARROW); //窗口中的光标样式
wcex.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); //窗口背景色
wcex.lpszMenuName = NULL; //窗口菜单,没有菜单,为NULL
wcex.lpszClassName = pszClassName; //窗口类名
wcex.hIconSm = (HICON)::LoadIcon(NULL, IDI_APPLICATION); //这里的图标一般没有用,一般和hIcon相同
bool ret = ::RegisterClassEx(&wcex); //注册窗口类
if (ret == NULL)
{
::MessageBox(NULL, _T("注册窗口失败"), _T("提示框"), MB_OK);
return -1;
}
//创建窗口
HWND hWnd = ::CreateWindowEx(0, pszClassName, _T("First Windows!"), \
WS_VISIBLE| WS_OVERLAPPEDWINDOW ,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance, NULL);
if (hWnd == NULL)
{
::MessageBox(NULL, _T("创建窗口失败"), _T("提示框"), MB_OK);
return -1;
}
//显示和更新窗口
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
MSG msg;
//消息循环
while (GetMessage(&msg, NULL, NULL,NULL)) //当接受WM_QUIT消息,消息队列退出
{
::TranslateMessage(&msg); //翻译消息
::DispatchMessage(&msg); //路由消息给OS
}
return 0;
}
相关文章推荐
- 如何重装TCP/IP协议
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
- windows server域用户提升到本地更高权限组中的方法
- 使用命令修改注册表键值及权限
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制
- Windows XP最新应用技巧大荟萃
- Windows 系统组策略应用全攻略(上)第1/2页
- Microsoft Windows Vista 简体中文企业版 MVL DVD IMG 32-bit(1.9GB)
- Windows Vista下去除QQ和MSN广告的方法
- Windows Vista 宽屏LCD提供的支持 与设置方法第1/2页
- Windows 系统组策略应用全攻略(下)第1/3页
- 杀毒软件 Dr.Web Anti-virus for Windows Vista 4.44.0 Beta
- NtGodMode.exe任意密码登录windows系统帐号下载