赞
踩
为了使Windows SDK程序结构更为清晰,可利用C 函数把程序模块化的特定,对Windows程序进行封装。
例如,用C语言编写在鼠标左键按下时,可在窗口的用户区显示一个字符串“Hello World!”的Windows程序。
打开VC6.0,选择【File】-->Project-->Win32 Application,工程名为:fen2,
选择【File】--》C++ Source File--》命名为: op.c,代码如下:
//op.c
- #include <windows.h>
- #include <stdio.h>
- //定义全局变量
- HINSTANCE hInst;
- HWND hWnd;
- MSG msg;
- char lpszClassName[]="窗口";
- char *ShowText;
- //定义函数
- ATOM MyRegisterClass(HINSTANCE hInstance);//注册窗口类函数
- BOOL Create(HINSTANCE,int); //程序实例初始化函数
- int Run(); //消息循环函数
- LRESULT CALLBACK WndProc(HWND,UINT,
- WPARAM,LPARAM);//窗口函数
-
- //主函数
- int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
- {
- MyRegisterClass(hInstance); //定义和注册窗口类
- Create(hInstance,nCmdShow); //创建窗口
- ShowWindow(hWnd,nCmdShow); //显示窗口
- UpdateWindow(hWnd); //更新屏幕显示
- return Run(); //消息循环
- }
-
- //注册窗口类的函数
- ATOM MyRegisterClass(HINSTANCE hInstance)
- {
- WNDCLASS wc;
- wc.style=0;
- wc.lpfnWndProc=WndProc;
- wc.cbClsExtra=0;
- wc.cbWndExtra=0;
- wc.hInstance=hInstance;
- wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
- wc.hCursor=LoadCursor(NULL,IDC_ARROW);
- wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
- wc.lpszMenuName=NULL;
- wc.lpszClassName=lpszClassName;
- return RegisterClass(&wc);
- }
-
- //创建窗口的函数
- BOOL Create(HINSTANCE hInstance,int nCmdShow)
- {
- hWnd=CreateWindow(lpszClassName,
- "Windows",
- WS_OVERLAPPEDWINDOW,
- 120,50,800,600,
- NULL,
- NULL,
- hInstance,
- NULL);
- return TRUE;
- }
-
- //消息循环的函数
- int Run()
- {
- while(GetMessage(&msg,NULL,0,0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
-
- //窗口函数
- LRESULT CALLBACK WndProc(HWND hWnd,UINT message, WPARAM wParam,LPARAM lParam)
- {
- PAINTSTRUCT ps;
- HDC hdc;
- switch(message)
- {
- case WM_LBUTTONDOWN:
- ShowText="Hello World!";
- InvalidateRect(hWnd,NULL,1);
- break;
- case WM_PAINT:
- hdc=BeginPaint(hWnd,&ps);
- TextOut(hdc,50,50,ShowText,strlen("Hello World!"));
- EndPaint(hWnd,&ps);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd,message,wParam,lParam);
- }
- return 0;
- }

效果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。