转自: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窗口程序实例相关推荐

  1. WinAPI入门: 第一个标准Win32窗口程序 [改进详细注释版]

    WinAPI入门: 第一个标准Win32窗口程序 下载链接: 若想立即看到本程序的运行结果,可点击EXE文件的免费下载链接; HelloWin_v1.sfx.exe;–带语音和背景音乐; 相关链接: ...

  2. 让Win32窗口程序拥有控制台窗口

    让Win32窗口程序拥有控制台窗口 首先,为什么我们有了普通窗口后还要控制台窗口呢?因为我们可以用它方便的输出调试信息,而且普通玩家看到了也会觉得很高端.如果他会输几条命令,可能他会以为自己就是黑客了 ...

  3. 第一个 Win32 窗口程序

    第一个 Win32 窗口程序 程序骨架 int WinMain(){ // 设计窗口外观及交互响应,注册,申请专利RegisterClass(...) ;// 生产窗口 CreateWindow(.. ...

  4. 我的第一个win32窗口程序------------记录

    // Myday03.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "Myday03.h" int API ...

  5. java窗口程序实例_Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  6. C#调用win32 api程序实例

    1.声明static extern 方法,使用DllImport特性 class MyClass{[DllImport("kernel32", SetLastError = tru ...

  7. C语言结构体和结构体数组示例 - Win32窗口程序演示

    C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...

  8. 最简单的DX窗口程序

    一.下载DX装起来:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 二.创建一个Win32窗口 ...

  9. VS创建 Win32 应用程序(实现窗口的创建)

    VS创建 Win32 应用程序(实现窗口的创建)(二) 程序框架如下: 一.VS演示流程 打开VS----文件----新建----项目----Windows 桌面应用程序 二.生成代码:(大部分函数在 ...

最新文章

  1. MIT+IBM同时利用AI探索神经科学,让脑科学研究如虎添翼
  2. 学习Linux的一些建议
  3. linux源代码安装程序
  4. Python爬虫淘宝商品详情页价格、类似数据
  5. 【GPU编程】体绘制传输函数-分类(Volume Rendering Transfer function:Pre- VS Post-Classification)
  6. 今日拷问:侬是什么垃圾!
  7. 190314每日一句
  8. 【sql的四大连接】
  9. 144项大神级ppt制作技术
  10. 竞品分析 | 不背单词、百词斩
  11. Selenium04-selenium中的Xpath元素定位方法爬虫实践
  12. 手机开USB热点给电脑使用失败
  13. 孤荷凌寒自学python第四十五天Python初学基础基本结束的下阶段预安装准备
  14. linux内核编程(hello world示例程序)
  15. mysql的cpu使用率突然增高_mysql cpu使用率过高解决方法
  16. 联想台式计算机g50500i,联想台式电脑的价格及配置
  17. 二分法算法复杂度简化_让我们简化算法的复杂性!
  18. PV、UV、IP含义及关系
  19. RSD 教程 —— §3.3 观察图像
  20. js 数组遍历方法详解(map、filter、find、findIndex、reduce)

热门文章

  1. PostgreSQL设置字段默认值汇总(包含varchar,int,bool,时间,主键自增)
  2. 计算器(难度系数:3颗星)
  3. PHP脚本中的两种换行符的区别
  4. Qt QImage类详解(QImage类型转换、QImage类函数及QImage像素操作)
  5. 王桂林 C++基础与提高 练习题——格式时钟输出(实时的,精确到秒)
  6. 模型选择准则之AIC和BIC
  7. 关闭selinux的方法汇总
  8. PreparedStatement的executeQuery、executeUpdate和execute
  9. 信号与系统 - 非周期信号的傅里叶变换
  10. ORACLE自学教程