<转>VC++基础 使用API创建窗体(必须要明白的)

#include <windows.h>                                        //头文件
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);        //窗口函数声明
char szClassName[]="windowclass";                                //窗口结构体的名称
char szAppTitle[]="使用API创建窗口";                            //窗口的标题
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam , INT nCmdShow)                                                    //WinMain()函数的定义
{
    HWND hMainWnd;                                        //窗口句柄
    MSG msg;                                                //消息结构体
    WNDCLASS winclass;                                    //窗口结构体
if(!hPrevInstance)
//判断是否已有应用程序的实例在运行,给窗口结构体的数据成员赋值来规定所要建立的窗口的特征
    {
        winclass.style=CS_HREDRAW|CS_VREDRAW;                //窗口风格
        winclass.lpfnWndProc=WndProc;                            //窗口的消息处理函数
        winclass.cbClsExtra=0;                                 //窗口类无扩展
        winclass.cbWndExtra=0;                                 //窗口实例无扩展
        winclass.hInstance=hInstance;                            //当前应用程序实例句柄
        winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);    //窗口的最小化图标为缺省图标
        winclass.hCursor=LoadCursor(NULL,IDC_ARROW);            //窗口采用箭头光标
        winclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//窗口背景色为白色
        winclass.lpszMenuName=NULL;//无窗口菜单
        winclass.lpszClassName=szClassName;                     //给窗口结构体命名    
        RegisterClass(&winclass);                                //注册窗口
    }
//下面用CreateWindow()函数来建立窗口,并返回所建立窗口的句柄
    hMainWnd=CreateWindow(
        szClassName,                                        //窗口结构体的名称
         szAppTitle,                                        //窗口的标题
         WS_OVERLAPPEDWINDOW,                            //窗口风格为可重叠窗口
//下面四个参数代表窗口左上角x,y坐标和窗口的宽度与高度,都使用缺省值
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
//下面参数分别为父窗口句柄、窗口菜单句柄、应用程序实例句柄和附加参数
NULL,NULL,hInstance,NULL);
    ShowWindow(hMainWnd,SW_SHOWNORMAL);                        //显示窗口
    UpdateWindow(hMainWnd);                                    //更新窗口
//下面用While()循环来建立消息循环
    while(GetMessage(&msg,NULL,0,0))                        //获取消息,填充msg结构体
    {
        TranslateMessage(&msg);                            //翻译键盘消息
        DispatchMessage(&msg);                    //向窗口函数发送消息,让窗口函数处理
    }
    return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hMainwnd, UINT message, WPARAM wParam, LPARAM lParam)                                                              //窗口函数的定义
{
    HDC hdc;                                                    //设备描述表
    PAINTSTRUCT ps;                                            //刷新区域
    RECT rect;                                                    //矩形结构
    char messageleft[]="按下了鼠标左键!";        //单击鼠标左键,消息框将显示的提示内容
       switch(message)                                            //判断消息标识符
       {
       case WM_PAINT:                                            //窗口重绘
           {
           hdc=BeginPaint(hMainwnd,&ps);
           GetClientRect(hMainwnd,&rect);                            //获取客户区区域
           rect.bottom=rect.top+50;
           DrawText(hdc,TEXT("使用Windows API创建Windows窗口程序!"),-1,&rect,DT_SINGLELINE| DT_CENTER|DT_VCENTER);                                        //在客户区中央输出文字
           EndPaint(hMainwnd,&ps);
           break;
           }
       case WM_LBUTTONDOWN:
        {
            MessageBox(GetFocus(),messageleft,"使用API创建窗口",MB_OK|MB_ICONINFORMATION);
            break;
        }
       case WM_DESTROY://关闭应用程序窗口时发出的消息
        {
        PostQuitMessage(0);                        //发出WM_QUIT消息,结束应用程序
        return 0;
        }
       default :
        break;
    }
return DefWindowProc(hMainwnd,message,wParam,lParam);        //其它消息交给Windows做默认处理
}

 

转载于:https://www.cnblogs.com/cwbo-win/articles/3394549.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值