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是主对话框类,主对话框也就是此应用程序运行后显示的主要界面。

  • 相关阅读:
    关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写
    今日工作心得:asp.net中使用javascript进行验证的注意点
    今日工作心得:能够引起FileUpload控件的PostedFile总是为null的一个原因
    完美解决office 2007安装失败(Office.ZhCN/...)
    关于FCKeditor,上传文件时提示invalid request
    今日学习:关于C#多线程之一——异步委托
    今日工作心得:关于C#读取Excel的一些资料
    c# webBrowser读取gb2312 中文变方框的问题
    C#中HashTable的用法
    今日工作心得——javascript结合jquery使图片适应窗口大小
  • 原文地址:https://www.cnblogs.com/yskn/p/9677516.html
Copyright © 2011-2022 走看看