win32API应用程序编写
设计窗口类;
注册窗口;
创建窗口;
显示窗口;
更新窗口;
消息循环;
窗口函数;
实例如下:
#include <windows.h>
LRRESULT CALLBACK WndProc(HWND,UINT,WPARAM,lPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int CmdShow)
{
static TCHAR szAppName[]=TEXT("hell world");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbClsExtra=0;
wndclass.hIstance=hIstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObjiect(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=szAppName;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows NT"),szAppName,MB_ICONERROR);//如果注册是假的话,执行这个//
return 0;
}
hwnd=CreateWindow(szAppName,TEXT("The Hello Program"),//窗口的标题//
WS_OVERRLAPPEDWINDOW,
CW_USEDEFAULT,//x坐标
CW_USEDEFAULT,//y坐标
CW_USEDEFAULT,//x大小
CW_USEDEFAULT,//y大小
NULL,
NULL,
hIstance,
NULL);
ShowWindow(hwnd,iCmdShow);//显示窗口
UpDeteWindow(hwnd);//更新窗口
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg wParam;
}
LPRESULT WINAPI WinMain(HWND hwnd,UINT message,
WPARAM wparam,LPARAM lparam)
{
HDC hdc;//句柄
PAINTSTRUCT ps;//绘图
RECT rect;
switch(message)
{
case WM_CREATE:
playsound(TEXT("hello world"),NULL,SND_PILENAME|SNDASYNC);//声音
return 0;
break;
case WM_PAINT://绘制字符
hdc=BigainPaint(hwnd,&ps);//设备句柄
DraeText(hdc,TEXT,("hello World"),-1,&rect,//参数中有方式格式
dt_SINGLFLINE|DTCENTER|DT_VCENTER);
EndPaint(hwnd,&ps);
break;
case WM_DESTROY//定义表示“退出”
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd,message,wparam,lparam);
}
虽然写了这么长的代码,但这只是我照搬照抄下来的,至今我还没弄懂消息机制的原理,到底什么时候才产生WM_CRWEATE消息,什么时候才产生WM_PAINT消息呢?还有哪些东西会在这两个消息去实现呢?如果有哪位大侠看到我这些问题时,请您不吝赐教!我会记住您的恩德的!谢谢啦!
应该是在建立窗口的时候吧,我也是刚看了WIN32。