简单的窗口创建

要创建一个Windiws窗口程序,那么它的格式都是固定的

1。设计一个窗口类 WNDCLASS
2。注册窗口类 RegisterClass
3。创建一个窗口CreateWindow
4。显示窗口 ShowWindow
5。更新窗口 UpdateWindow
6。消息循环,从消息队列中取消息

要创建一个回掉函数,用来处理相应的消息


下面是一个示例:
#include  < windows.h >
#include 
< stdio.h >
#include 
< iostream.h >

LRESULT CALLBACK WinProc(
                            HWND hwnd,      
//  handle to window
                            UINT uMsg,       //  message identifier
                            WPARAM wParam,   //  first message parameter
                            LPARAM lParam    //  second message parameter
                            );


int  WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,  int  nShowCmd )
{
    
//创建窗口类
    WNDCLASS wndC;

    wndC.cbClsExtra 
= 0;
    wndC.cbWndExtra 
= 0;
    wndC.hbrBackground 
= (HBRUSH)GetStockObject(BLACK_BRUSH);
    wndC.hCursor 
= LoadCursor(NULL,IDC_CROSS);
    wndC.hIcon 
= LoadIcon(NULL,IDI_ERROR);
    wndC.hInstance 
= hInstance;
    wndC.lpfnWndProc 
= WinProc;
    wndC.lpszClassName 
= "WinMain_M.A.O";
    wndC.lpszMenuName 
= NULL;
    wndC.style 
= CS_VREDRAW | CS_HREDRAW;

    
//注册窗口类
    RegisterClass(&wndC);

    
//创建窗口
    HWND hWnd;
    hWnd 
= CreateWindow("WinMain_M.A.O","我的第一个WinApp - WinMain",(WS_OVERLAPPEDWINDOW) & ~WS_MAXIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,0);


    
//显示窗口
    ShowWindow(hWnd,SW_SHOWNORMAL);

    
//更新窗口
    UpdateWindow(hWnd);

    
//消息循环
    MSG msg;

    
while (GetMessage(&msg,NULL,0,0)) //当接收到WM_QUIT消息后退出消息循环
    {
        TranslateMessage(
&msg);
        DispatchMessage(
&msg);
    }

    
return 0;
}


// 窗口回掉函数
LRESULT CALLBACK WinProc(
                            HWND hwnd,      
//  handle to window
                            UINT uMsg,       //  message identifier
                            WPARAM wParam,   //  first message parameter
                            LPARAM lParam    //  second message parameter
                            )
{
    
switch(uMsg)
    
{
    
case WM_PAINT:
        HDC hDc;
        PAINTSTRUCT ps;
        
//BeginPaint 和 EndPaint只能在消息WM_PAINT中使用
        hDc = BeginPaint(hwnd,&ps);
        TextOut(hDc,
0,0,"这是我的第一个Win APP 程序",strlen("这是我的第一个Win APP 程序"));
        EndPaint(hwnd,
&ps);
        
break;
    
case WM_CHAR:
        
//存储接收的char
        char szBuffer[100];
        sprintf(szBuffer,
"char is %d",wParam);
        MessageBox(hwnd,szBuffer,
"Reserved",MB_OK);
        
break;
    
case WM_LBUTTONDOWN:
        MessageBox(hwnd,
"Onclick Mouse","Onclick",MB_OK);
        HDC hdc;
        hdc 
= GetDC(hwnd);
        TextOut(hdc,
250,100,"^_^捕获鼠标按下消息",strlen("^_^捕获鼠标按下消息"));
        ReleaseDC(hwnd,hdc);
        
break;
    
case WM_CLOSE:
        
if (IDYES == MessageBox(hwnd,"是否要退出程序","关闭",MB_YESNO))
        
{
            
//Post WM_DESTROY 消息
            DestroyWindow(hwnd);
        }

        
break;
    
case WM_DESTROY:
        PostQuitMessage(
0); //发送一个WM_QUIT消息,到消息队列中
        break;
    
default:
        
return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }


    
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值