用C语言封装Windows程序

      为了使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;
}


效果如下:

   

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值