vc++ WinMain

来源:互联网 发布:淘宝店主认证 编辑:程序博客网 时间:2024/04/30 22:25

 创建一个完整的窗口需要经过下面四个操作步骤:
1、设计一个窗口类;
2、注册窗口类;
3、创建窗口;
4、显示及更新窗口。

#include <windows.h>

#include <stdio.h>


LRESULT CALLBACK WinSunProc(
    HWND hwnd,//窗口句柄
UINT uMsg,//message identifier
WPARAM wParam,//第一个消息参数
LPARAM lParam//第二个消息参数
);




int WINAPI WinMain(
HINSTANCE hInstance,//应用程序的句柄,标示不同的运行文件exe,当前运行的句柄
HINSTANCE hPrevInstance,//先前实例的一个句柄
    LPSTR lpCmdLine,//长指针,指向字符串首地址的指针,命令行参数
    int nCmdShow//显示的状态,指定运行时窗口最大化显示还是隐藏显示等
)
{
WNDCLASS wndcls;//1---设计一个窗口类
wndcls.cbClsExtra=0;//类的额外附加字节数
wndcls.cbWndExtra=0;//窗口的额外附加字节数
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//背景
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;//窗口过程函数
wndcls.lpszClassName="WeiXin";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;//水平重画和垂直重画
    RegisterClass(&wndcls);//2---注册一个窗口类


HWND hwnd;//3---创建一个窗口,定义一个句柄
hwnd=CreateWindow("WeiXin","北京",WS_OVERLAPPEDWINDOW,0,0,400,600,NULL,NULL,hInstance,NULL);

    //显示窗口
ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);//更新一个窗口


//消息循环
    MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);//将收到的消息传递给窗口的回调函数,回调函数由操作系统调用
}
return 0;
}


LRESULT CALLBACK WinSunProc(//函数名可以更改,参数类型不可以更改
    HWND hwnd,//窗口句柄
UINT uMsg,//message identifier
WPARAM wParam,//第一个消息参数
LPARAM lParam//第二个消息参数
)
{
switch (uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);//格式化一个文本,到一个内存中;在消息的wParam中存放了按键的asic码 按%d的格式
        MessageBox(hwnd,szChar,"WeiXin",MB_OK);
break;
case WM_PAINT://消息重绘
HDC hDC;
PAINTSTRUCT ps;
        hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"培训",strlen("培训"));
EndPaint(hwnd,&ps);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","WeiXin",0);
HDC hdc;
TextOut(hdc,0,50,"计算机",strlen("计算机"));//在0 50的位置输出
hdc=GetDC(hwnd);
ReleaseDC(hwnd,hdc);


break;
case WM_CLOSE:
        if(IDYES==MessageBox(hwnd,"是否结束?","WeiXin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;


}
0 0
原创粉丝点击