您的位置:首页 > 编程语言 > C语言/C++

vc++ WinMain

2013-12-15 23:56 232 查看
创建一个完整的窗口需要经过下面四个操作步骤:

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: