第一个 Windows 应用程序
2009-02-16 08:40
225 查看
#include <windows.h>
//窗口过程声明
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdline, int nCmdShow)
{
const char* szWindowName = "第一个 Windows 应用程序"; //窗口标题
const char* szClassName = "WindowClass"; //窗口类名
//创建一个 WNDCLASSEX 结构体变量, 为其设置成员的值
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(WNDCLASSEX); //结构大小
wndclass.style = CS_HREDRAW | CS_VREDRAW; //水平重画,竖直重画
wndclass.lpfnWndProc = (WNDPROC)WndProc; //窗口过程
wndclass.cbClsExtra = 0; //没有额外的类内存
wndclass.cbWndExtra = 0; //没有额外的窗口内存
wndclass.hInstance = hInstance; //实例句柄
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //程序图标
wndclass.hCursor = LoadCursor(NULL, IDC_CROSS); //鼠标样式
wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); //背景白色
wndclass.lpszMenuName = NULL; //没有菜单名
wndclass.lpszClassName = szClassName; //窗口类名
wndclass.hIconSm = NULL; //没有类的小图标
//注册 WNDCLASSEX 结构体
::RegisterClassEx(&wndclass);
//创建主窗口
HWND hWnd = ::CreateWindowEx(
0, //dwExstyle, 扩展样式
szClassName, //lpClassName, 类名
szWindowName, //lpWindowName, 标题
WS_OVERLAPPEDWINDOW, //dwStyle, 窗口风格
CW_USEDEFAULT, //X, 初始 X 坐标
CW_USEDEFAULT, //Y, 初始 Y 坐标
CW_USEDEFAULT, //nWidth, 宽度
CW_USEDEFAULT, //nHeight, 高度
NULL, //hWndParent, 父窗口句柄
NULL, //hMenu, 菜单句柄
hInstance, //hInstance, 程序实例句柄
NULL); //lpparam, 用户数据
if(hWnd == NULL)
{
::MessageBox(NULL, "创建窗口出错!", "error", MB_OK);
return FALSE;
}
//显示窗口
::ShowWindow(hWnd, nCmdShow);
//刷新窗口
::UpdateWindow(hWnd);
//消息循环
MSG msg;
while(::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return msg.wParam;
}
//窗口过程函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
const char* szHello = "Hello World";
switch(message)
{
//重绘窗口
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = ::BeginPaint(hWnd, &ps);
::TextOut(hdc, 10, 10, szHello, strlen(szHello));
::EndPaint(hWnd, &ps);
break;
//销毁窗口
case WM_DESTROY:
::PostQuitMessage(0);
break;
}
//交给系统做默认处理
return ::DefWindowProc(hWnd, message, wParam, lParam);
}
//窗口过程声明
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdline, int nCmdShow)
{
const char* szWindowName = "第一个 Windows 应用程序"; //窗口标题
const char* szClassName = "WindowClass"; //窗口类名
//创建一个 WNDCLASSEX 结构体变量, 为其设置成员的值
WNDCLASSEX wndclass;
wndclass.cbSize = sizeof(WNDCLASSEX); //结构大小
wndclass.style = CS_HREDRAW | CS_VREDRAW; //水平重画,竖直重画
wndclass.lpfnWndProc = (WNDPROC)WndProc; //窗口过程
wndclass.cbClsExtra = 0; //没有额外的类内存
wndclass.cbWndExtra = 0; //没有额外的窗口内存
wndclass.hInstance = hInstance; //实例句柄
wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //程序图标
wndclass.hCursor = LoadCursor(NULL, IDC_CROSS); //鼠标样式
wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); //背景白色
wndclass.lpszMenuName = NULL; //没有菜单名
wndclass.lpszClassName = szClassName; //窗口类名
wndclass.hIconSm = NULL; //没有类的小图标
//注册 WNDCLASSEX 结构体
::RegisterClassEx(&wndclass);
//创建主窗口
HWND hWnd = ::CreateWindowEx(
0, //dwExstyle, 扩展样式
szClassName, //lpClassName, 类名
szWindowName, //lpWindowName, 标题
WS_OVERLAPPEDWINDOW, //dwStyle, 窗口风格
CW_USEDEFAULT, //X, 初始 X 坐标
CW_USEDEFAULT, //Y, 初始 Y 坐标
CW_USEDEFAULT, //nWidth, 宽度
CW_USEDEFAULT, //nHeight, 高度
NULL, //hWndParent, 父窗口句柄
NULL, //hMenu, 菜单句柄
hInstance, //hInstance, 程序实例句柄
NULL); //lpparam, 用户数据
if(hWnd == NULL)
{
::MessageBox(NULL, "创建窗口出错!", "error", MB_OK);
return FALSE;
}
//显示窗口
::ShowWindow(hWnd, nCmdShow);
//刷新窗口
::UpdateWindow(hWnd);
//消息循环
MSG msg;
while(::GetMessage(&msg, NULL, 0, 0))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
return msg.wParam;
}
//窗口过程函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
const char* szHello = "Hello World";
switch(message)
{
//重绘窗口
case WM_PAINT:
HDC hdc;
PAINTSTRUCT ps;
hdc = ::BeginPaint(hWnd, &ps);
::TextOut(hdc, 10, 10, szHello, strlen(szHello));
::EndPaint(hWnd, &ps);
break;
//销毁窗口
case WM_DESTROY:
::PostQuitMessage(0);
break;
}
//交给系统做默认处理
return ::DefWindowProc(hWnd, message, wParam, lParam);
}
相关文章推荐
- [程序]粗制烂造的第一个windows应用程序
- 第一个Windows应用程序--启动函数、入口点函数与退出函数
- Windows桌面应用程序(1-1st) 使用DirectX创建您的第一个Windows应用程序
- 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(二) (转)
- 第一个C# windows应用程序
- Windows Workflow Foundation(2) - 第一个workflow应用程序
- 第一个windows应用程序
- VS2008创建第一个Windows应用程序
- 第一个Windows应用程序--启动函数、入口点函数与退出函数
- Windows桌面应用程序(1-2-4-4th) 您的第一个Direct2D程序
- 运用JavaScript构建你的第一个Metro式应用程序(on Windows 8)(一)
- 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(三) (转)
- Windows 8实用窍门系列:1.使用Xaml+C#开发第一个Metro Style应用程序 推荐
- 关于在Windows上用Qt Creator建立第一个应用程序
- 用C#开发第一个WINDOWS应用程序
- 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(三)
- 我的第一个完整的Windows应用程序
- Windows 8技巧:第一个拆分布局应用程序修改Logo的方法介绍
- Windows下安装和构建我们第一个React Native应用程序(我是用的win10)
- Qt.Enterprise.v3.3.2在windows下安装并编译第一个应用程序