我的第一个win32 helloworld

来源:互联网 发布:淘宝血滴子买家秀 编辑:程序博客网 时间:2024/06/04 19:07

#include <windows.h>
#include "resource.h"

HINSTANCE g_instance;

BOOL MyRegisterClass(LPSTR pClassName);

void dispWindow(HWND hWnd);

HWND MyCreateWindow(LPSTR lpClassName);
//入口函数
int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd )
{
 g_instance = hInstance;
 LPSTR pClassName = "helloWindow";
 MyRegisterClass(pClassName);
 HWND m_hWnd= MyCreateWindow(pClassName);
 if(m_hWnd == NULL)
 {

  MessageBox(NULL,"create Window fail","",0);
 }

 dispWindow(m_hWnd);


 MSG msg;
 while(GetMessage(&msg,NULL,0,0))
 {

  DispatchMessage(&msg);
 }

 //system("pause");
 return 0;
}

LRESULT  CALLBACK WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{

 switch(nMsg)
 {

 case WM_QUIT:
   ;
      //CloseWindow(hWnd);
      // DestroyWindow(hWnd);

     // return DefWindowProc(hWnd,nMsg,wParam,lParam);
 case WM_DESTROY:

  PostQuitMessage(0);//程序退出消息循环

 }

 return DefWindowProc(hWnd,nMsg,wParam,lParam);


}

///注册窗口类

BOOL MyRegisterClass(LPSTR pClassName)
{

 WNDCLASS wndClass = {0};
 wndClass.style =CS_HREDRAW |CS_VREDRAW | CS_DBLCLKS;
 wndClass.hIcon = NULL;
 wndClass.hbrBackground = (HBRUSH)COLOR_WINDOWFRAME;
 wndClass.lpszClassName ="helloWindow";
 wndClass.hInstance =  g_instance ;
 wndClass.lpfnWndProc = WndProc;
 wndClass.hCursor = NULL;
 wndClass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
 wndClass.lpszClassName = pClassName;
 ATOM  nATom = RegisterClass(&wndClass);
 if(nATom == 0 )
 {

  MessageBox(NULL,"rigter fail!","",0);
  //AfxMessageBox("注册失败!");

 }
 else
 {
  // MessageBox(NULL,"rigter Ok!","",0);

 }
 return FALSE;
}

//创建窗口类
HWND MyCreateWindow(LPSTR lpClassName)
{
 CREATESTRUCT m_createStruct  = {0};
 HWND m_wnd = CreateWindow(lpClassName,"hello my window", WS_OVERLAPPEDWINDOW,20,20,640,480,NULL,NULL,g_instance,&m_createStruct);
 return m_wnd;
}

void dispWindow(HWND hWnd)
{

 ShowWindow(hWnd,SW_SHOWNORMAL);
 UpdateWindow(hWnd);
}

 

 //-------------------------------------------------------------------------

 

第一个窗口程序

   3.1 入口函数WinMain
   3.2 窗口处理函数
     当窗口处理消息事件时,系统调用该函数
    LRESULT CALLBACK WindowProc(
   HWND hwnd,      // 窗口的句柄
   UINT uMsg,      // 消息的ID号
   WPARAM wParam,  // 消息所对应的参数
   LPARAM lParam   // 消息所对应的参数
  );
   3.3 注册窗口类型
    typedef struct _WNDCLASS {
    UINT    style;  //窗口类的风格
    WNDPROC lpfnWndProc; //窗口处理函数
    int     cbClsExtra; //窗口类附加数据大小
    int     cbWndExtra; //窗口附加数据大小
    HANDLE  hInstance; //当前应用程序的实例句柄
    HICON   hIcon; //窗口图标
    HCURSOR hCursor; //窗口的鼠标
    HBRUSH  hbrBackground; //窗口的背景画刷
    LPCTSTR lpszMenuName; //菜单
    LPCTSTR lpszClassName; //类型名称
    } WNDCLASS;
   
    注册函数 RegisterClass
   3.4 创建窗口
     HWND CreateWindow(
    LPCTSTR lpClassName,  //窗口类型名称
    LPCTSTR lpWindowName, //窗口名称
    DWORD dwStyle,        //窗口类型
    int x,                //窗口的左上角X坐边
    int y,                //窗口的左上角X坐边
    int nWidth,           //窗口的宽度
    int nHeight,          //窗口的高度
    HWND hWndParent,      //父窗口句柄
    HMENU hMenu,          //窗口菜单句柄
     HANDLE hInstance,     //应用程序的实例句柄
     LPVOID lpParam        //创建的参数,一般为NULL
    );

   3.5 显示窗口
     ShowWindow 显示窗口
        BOOL ShowWindow(
     HWND hWnd,     //显示的窗口句柄
      int nCmdShow   //显示的方式
     );
     UpdateWindow 刷新窗口
   3.6 消息处理
     GetMessage 获取消息
     DispatchMessage 派发消息
  
   3.7 程序退出
     窗口销毁时,退出程序。在WndProc中实现。
        WM_DESTROY: 当窗口销毁时,会调用WndProc
          传递给使用者。
        PostQuitMessage:发送一个退出消息。

 

 

 

0 0
原创粉丝点击