• windowssdk编程从简单的对话框开始


          从最初的DOS时代到现在这么绚丽的windows时代,其中技术是在一步一步前进着,要想把windows下的程序给写好,还是需要去从windows的sdk及其汇编开始走起,只能这样才能一步步的学好windows开发,更好的学习伟大的windows机制,

        首先还是从我们的桌面应用程序开始,显示一个伟大的窗口,需要创建窗口的几个步骤:

    • 得到命令行参数(如果您想从命令行得到参数,可选);
    • 注册窗口类(必需,除非您使用 Windows 预定义的窗口类,如 MessageBox 或 dialog box;
    • 产生窗口(必需);
    • 在桌面显示窗口(必需,除非您不想立即显示它);
    • 刷新窗口客户区;
    • 进入无限的获取窗口消息的循环;
    • 如果有消息到达,由负责该窗口的窗口回调函数处理;
    • 如果用户关闭窗口,进行退出处理。

    在整个窗口从生到死的过程中需要走这些步骤的接下来按照上面的思路进行进行代码学习:

    #include <Windows.h>
    
    #include <tchar.h>
    
    HWND hWinMain;
    TCHAR szClassName[] = _T("MyClass");
    TCHAR szCaptionMain[] = _T("My First Window!");
    TCHAR szText[] = _T("Win32 program, Simple and powerful !");
    WNDCLASSEX stdWndClass;
    
    //如果有消息到达,由负责该窗口的窗口回调函数处理
    
    LRESULT CALLBACK ProcWinMain(   HWND hWnd, 
                           UINT Msg, 
                           WPARAM wParam, 
                           LPARAM lParam 
    )
    {
            switch(Msg)
            {
    
              //如果用户关闭窗口,进行退出处理
    
               case WM_CLOSE:
               {
                     DestroyWindow(hWinMain);
                     PostQuitMessage(NULL);
               }
                break;
    
              default:
                  return DefWindowProc(hWnd, Msg, wParam, lParam ); 
          }
         return 0;
    }
    
    
    int WINAPI WinMain(     HINSTANCE hInstance,
                            HINSTANCE hPrevInstance,
                            LPSTR lpCmdLine,
                            int nCmdShow
    )
    {
           MSG stMsg;
           WNDCLASSEX stdWndClass;
           RtlZeroMemory(&stdWndClass, sizeof(stdWndClass));
           stdWndClass.hCursor = LoadCursor(0,IDC_ARROW);
           stdWndClass.cbSize = sizeof(stdWndClass);
           stdWndClass.style = CS_HREDRAW|CS_VREDRAW;
           stdWndClass.lpfnWndProc = ProcWinMain;
           stdWndClass.hbrBackground = (HBRUSH)COLOR_WINDOW;
           stdWndClass.lpszClassName = szClassName;
           stdWndClass.hInstance = hInstance;
    
           //注册窗口
    
         RegisterClassEx(&stdWndClass);
    
           //产生窗口
    
           hWinMain = CreateWindowEx(WS_EX_CLIENTEDGE,szClassName,szCaptionMain,\
                            WS_OVERLAPPEDWINDOW,100,100,600,400,NULL,NULL,hInstance,NULL);
    
           if(!hWinMain)
                 return 0;
    
    
            //在桌面显示窗口
            ShowWindow(hWinMain,SW_SHOWNORMAL);
    
            //刷新窗口客户区
            UpdateWindow(hWinMain);
    
           //进入无限的获取窗口消息的循环
           while(GetMessage(&stMsg,NULL,0,0))
           {
                 TranslateMessage(&stMsg);
                 DispatchMessage(&stMsg);
           }
    
           return stMsg.wParam;
    }

    从上面的简单代码当中,可以看到其实windows程序的结构也是和控制台的程序类似的

    通过上面的代码,在以后的使用的过程中我们可以讲其作为一种模板来用,一个简单的窗口展现在我们的面前~~~

  • 相关阅读:
    Extjs 集合了1713个icon图标的CSS文件
    Sencha Touch 2 DataView / List 分页
    Sencha Touch 笔记
    [奉献]通过命令快速启动应用程序的小软件(QuickLauncher V1.1)
    PTC FlexPLM rfa 接口自动创建产品规格
    Excel Vba 调用WebService的两种方式,解决MSSOAP30 64位不兼容问题
    Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
    C#获取远程图片,需要Form用户名和密码的Authorization认证
    [转]plsql不安装oracle客户端 进行远程连接
    WPF、Silverlight程序编码资料收集
  • 原文地址:https://www.cnblogs.com/OneDream/p/2879133.html
Copyright © 2020-2023  润新知