#include <windows.h>

HINSTANCE g_hInst = NULL;

//2 窗口处理函数
LRESULT CALLBACK WndProc( HWND hWnd,
UINT nMsg,
WPARAM wParam,
LPARAM lParam )
{
//判断消息ID
switch( nMsg )
{
case WM_DESTROY: //窗口销毁的消息
PostQuitMessage( 0 ); //发送退出消息
return 0;
}
//调用缺省的消息处理程序
return DefWindowProc( hWnd, nMsg,
wParam, lParam );
} //3 注册窗口类型
BOOL MyRegister( LPSTR pszClassName )
{
WNDCLASS wc = {0};
ATOM nAtom = 0;
//构造注册窗口的参数
wc.style = CS_VREDRAW|CS_HREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = g_hInst;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE);
wc.lpszMenuName = NULL;
wc.lpszClassName = pszClassName;
//注册窗口
nAtom = RegisterClass( &wc );
if( 0 == nAtom )
{
MessageBox( NULL, "Register Failed",
"Error", MB_OK|MB_ICONWARNING );
return FALSE;
}
return TRUE;
} //4 窗口创建
HWND MyCreate( LPSTR pszClassName )
{
HWND hWnd = NULL;
//创建窗口
hWnd = CreateWindow( pszClassName,
"HelloWnd", /*WS_OVERLAPPEDWINDOW*/WS_POPUP,
0, 0, 800, 600, NULL, NULL,
g_hInst, NULL );
if( NULL == hWnd )
{
MessageBox( NULL, "CreateWnd Failed",
"Error", MB_OK );
return NULL;
} return hWnd;
} //5 显示窗口
void DisplayWnd( HWND hWnd )
{
//显示
ShowWindow( hWnd, SW_SHOW );
//刷新
UpdateWindow( hWnd );
}
//6 消息处理
void Message( )
{
MSG msg = { 0 };
//消息循环处理,获取消息
while( GetMessage( &msg, NULL, 0, 0 ) )
{
//派发消息
DispatchMessage( &msg );
}
}
//1 入口函数
int WINAPI WinMain( HINSTANCE hInst,
HINSTANCE hPrevInst,
LPSTR pszCmdLine,
int nShowCmd )
{
HWND hWnd = NULL;
g_hInst = hInst;
//注册窗口类型
MyRegister( "MyWnd" );
//创建注册类型的窗口
hWnd = MyCreate( "MyWnd" );
//显示窗口
DisplayWnd( hWnd );
//消息处理
Message( );
return 0;
}

最新文章

  1. 配置 DHCP 服务 - 每天5分钟玩转 OpenStack(89)
  2. innodb的表最大限制
  3. 预备作业02:成功经验与C语调查20155230
  4. JavaScript 里 new 出来的对象 怎么销毁它?
  5. 【Linux高频命令专题(12)】touch.md
  6. 在O(1)时间删除指定链表结点
  7. 【CSS学习笔记】字体的控制
  8. 逃跑(escape)
  9. maven创建web工程
  10. PHP 中move_uploaded_file 上传中文文件名失败
  11. 【默认加入持久化机制,防止消息丢失,v0.0.3】对RabbitMQ.Client进行一下小小的包装,绝对实用方便
  12. web APIS
  13. TensorFlow官网无法访问
  14. Django实现微信消息推送
  15. CGPoint,CGSize,CGRect转NSString以及CGRect的一些便捷实用方法
  16. 良好的GUI设计指南
  17. Struts2再曝高危漏洞(S2-020补丁绕过)
  18. OAF日志使用总结
  19. idea 安装lombok 插件过程
  20. AFN同步异步请求

热门文章

  1. java客户端验证https连接(忽略证书验证和证书验证两种方式)
  2. 在python中使用正则表达式(转载)
  3. QString std::string 相互转 含中文
  4. thinkphp5 更改入口文件在主目录
  5. JAVA 基础编程练习题41 【程序 41 猴子分桃】
  6. CockroachDB学习笔记——[译]The New Stack:遇见CockroachDB,一个弹性SQL数据库
  7. Unity3d 烘培lightingmap 注意的2点.
  8. Spark源码(1): SparkConf
  9. ip routing 开启三层路由模式
  10. 【VS开发】MP4与H.264