您的位置:首页 > 编程语言 > C语言/C++

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  VC++ VC MFC windows