zoukankan      html  css  js  c++  java
  • c++ mfc和win32项目

      win32项目是一个底层的窗口的实现过程,它采用的库仅仅是windows.h,我们通过winain作为函数的入口,然后经过窗口类的内容的填写,窗口的注册,创建,显示刷新,到最后的消息循环,这是一个win32项目的基本流程.

    #include     
      
    LRESULT CALLBACK myWndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam);   
         
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)      
    {      
      const static TCHAR appName[] = TEXT("Hello world");      
      WNDCLASSEX myWin;      
      myWin.cbSize = sizeof(myWin);      
      myWin.style = CS_HREDRAW | CS_VREDRAW;      
      myWin.lpfnWndProc = myWndProc;      
      myWin.cbClsExtra = 0;      
      myWin.cbWndExtra = 0;      
      myWin.hInstance = hInstance;      
      myWin.hIcon = 0;      
      myWin.hIconSm  = 0;      
      myWin.hCursor = 0;      
      myWin.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);      
      myWin.lpszMenuName = 0;      
      myWin.lpszClassName = appName;      
      //Register      
      if (!RegisterClassEx(&myWin)) return 0;      
      const HWND hWindow = CreateWindow(      
        appName,      
        appName,      
        WS_OVERLAPPEDWINDOW,      
        CW_USEDEFAULT,      
        CW_USEDEFAULT,      
        CW_USEDEFAULT,      
        CW_USEDEFAULT,      
        0,      
        0,      
        hInstance,      
        0);      
      ShowWindow(hWindow,iCmdShow);      
      UpdateWindow(hWindow);      
      {      
        MSG msg;      
        while(GetMessage(&msg,0,0,0))      
        {      
          TranslateMessage(&msg);      
          DispatchMessage(&msg);      
        }      
        return (int)msg.wParam;      
      }      
    }      
         
    LRESULT CALLBACK myWndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam)      
    {      
      if (msg==WM_PAINT)      
      {      
        PAINTSTRUCT ps;      
        const HDC hDC = BeginPaint(hWindow,&ps);      
        RECT rect;      
        GetClientRect(hWindow,&rect);      
        DrawText(hDC,TEXT("HELLO WORLD"),-1,&rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);      
        EndPaint(hWindow,&ps);      
        return 0;      
      }      
      else if (msg==WM_DESTROY)      
      {      
        PostQuitMessage(0);      
        return 0;      
      }      
      return DefWindowProc(hWindow,msg,wParam,lParam);      
    }
    

       MFC项目是利用mfc(微软的基础类库)来编写windows应用程序,相比上面用windows的API编写,MFC编写起来更加的便利其具体的实现过程的原理和之前都差不多.我们可以在vs上通过向导来生成MFC工程,一般情况下我们都新建立基于对话框的应用程序,我们可以在Solution Explorer视图中看到,此工程的文件要比单文档应用程序少的多,在Class View中主要有三个类:CAboutDlg、CAdditionApp和CAdditionDlg。CAboutDlg是应用程序的“关于”对话框类,CAdditionApp是由CWinApp派生的类,CAdditionDlg是主对话框类,主对话框也就是此应用程序运行后显示的主要界面。

  • 相关阅读:
    JavaScript-Runoob:JavaScript JSON
    JavaScript-Runoob:JavaScript let 和 Const
    JavaScript-Runoob:JavaScript this 关键字
    System.AttributeTargets.cs
    笔记-bat:列表
    Nginx模块举例说明
    Docker拉取镜像报错 uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
    Mysql聚簇索引和非聚簇索引的区别
    Atitit。Cas机制 软件开发 编程语言 无锁机制 java c# php
    百度ueditor编辑支持word内容和截图的复制黏贴
  • 原文地址:https://www.cnblogs.com/yskn/p/9677516.html
Copyright © 2011-2022 走看看