创建一个win32窗口程序


#include "stdafx.h"
2
HINSTANCE g_hInst=NULL;
3
//窗口处理函数
LRESULT CALLBACK WndProc(HWND hWnd,//窗口句柄
                         UINT nMsg,//窗口消息Id
                         WPARAM wParam,//消息传来的两个参数
                         LPARAM lParam)
{   
    switch(nMsg)    //消息退出的命令
    {
    case WM_DESTROY:
        PostQuitMessage(0); //使窗口退出
        return 0;
    }
    //返回缺省的窗口处理函数
    return DefWindowProc(hWnd,nMsg,wParam,lParam);
}
4
//注册窗口-首先使用WNDCLASSEX定义窗口类的各项参数
BOOL RegisterWnd(LPSTR pszClassName)
{
    WNDCLASSEX wce      ={0};
    wce.cbSize          =sizeof(wce);
    wce.cbClsExtra      =0;//窗口类的附加参数
    wce.cbWndExtra      =0;//窗口的附加参数
    wce.hbrBackground   =HBRUSH(COLOR_WINDOW);//窗口的背景画刷
    wce.hCursor         =NULL;//窗口的光标
    wce.hIcon           =NULL;//窗口的图标
    wce.hIconSm         =NULL;//窗口的小图标
    wce.hInstance       =g_hInst;//应用程序的实例句柄
    wce.lpfnWndProc     =WndProc;//窗口处理函数指针
    wce.lpszClassName   =pszClassName;//窗口类的名称
    wce.lpszMenuName    =NULL;//菜单名称
    wce.style           =CS_HREDRAW|CS_VREDRAW;//窗口风格
//注册窗口用RegisterClassEx,返回用ATOM
    ATOM nAtom=RegisterClassEx(&wce);
    if(0==nAtom)
    {
        return FALSE;//窗口注册没有成功
    }
    return TRUE;
}

5创建窗口
HWND CreateWnd(LPSTR pszClassName)
{
    HWND hWnd=CreateWindowEx(0,//窗口的扩展风格
        pszClassName,//窗口类的名称
        "MyWnd",//窗口的标题
        WS_OVERLAPPEDWINDOW,//窗口的堆叠风格
        CW_USEDEFAULT,//窗口的坐标和长宽
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        NULL,//窗口的父窗口
        NULL,//窗口的菜单
        g_hInst,//应用程序句柄
        NULL);//窗口创建时的附加参数
    return hWnd;
}

6窗口的显示
void DisplayWnd(HWND hWnd)
{
    ShowWindow(hWnd,SW_SHOW);//显示窗口
    UpdateWindow(hWnd);//刷新窗口界面
}

7窗口的消息循环
void Message()
{
    MSG msg={0};
    while (GetMessage(&msg,NULL,0,0))//获取消息
    {
        TranslateMessage(&msg);//翻译消息
        DispatchMessage(&msg);//调用窗口处理函数处理消息
    }
}
 1 新建时自动生成
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    // TODO: Place code here.
将程序依次执行
    g_hInst=hInstance;
    RegisterWnd("MYWND");//注册窗口
    HWND hWnd=CreateWnd("MYWND");//创建窗口
    DisplayWnd(hWnd);//显示窗口
    Message( );//执行消息循环

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值