VC++6.0与Windows窗口设计的学习

一、作业目的:

  1. 了解 windows操作系统应用程序开发的基本概念,win32 API函数、消息与事件驱动;

  2. 掌握WinMain函数的基本框架,窗口定义、窗口创建、消息循环及窗口过程函数;

二、作业要求:

动手写第一个基于windows API 的基于窗体、消息循环、事件驱动的 Windows C语言风格的Windows 程序。

三、代码

#include <windows.h> 
#include <stdio.h> 

LRESULT CALLBACK WinSunProc//CALLBACK函数是由Windows系统调用,程序不会调用他
(
  HWND hwnd,      // 窗口句柄
  UINT uMsg,      // 窗口消息
  WPARAM wParam,  // 附加参数
  LPARAM lParam   // 附加参数
);

int WINAPI WinMain //c程序一般的进入点是Main,而Windows程序的进入点是WinMain
(
  HINSTANCE hInstance,      // 当前-应用程序实例句柄
  HINSTANCE hPrevInstance,  // 先前-应用程序实例句柄
  LPSTR lpCmdLine,          // 指向字符串的指针(LP-长指针,STR-字符串)
  int nCmdShow              // 
)
{
	WNDCLASS wndcls;//定义窗口类
	wndcls.cbClsExtra=0;
	wndcls.cbWndExtra=0;//附加内存
	wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//画刷句柄,窗口的背景
	wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);//光标句柄
	wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);//图标句柄
	wndcls.hInstance=hInstance;//实例化
	wndcls.lpfnWndProc=WinSunProc;//回调函数
	wndcls.lpszClassName="Class1";//类名
	wndcls.lpszMenuName=NULL;//菜单名字
	wndcls.style=CS_HREDRAW | CS_VREDRAW;
	RegisterClass(&wndcls);//注册窗口类

	HWND hwnd;//定义句柄,为窗口标识
	hwnd=CreateWindow("Class1","我的窗口",WS_OVERLAPPEDWINDOW,
		0,0,600,400,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,      
  WPARAM wParam,  
  LPARAM lParam   
)
{
	switch(uMsg)
	{
	case WM_CHAR://按下键盘按键时
		char szChar[20];
		sprintf(szChar,"char is %d",wParam);
		MessageBox(hwnd,szChar,"消息",0);
		break;
	case WM_LBUTTONDOWN://鼠标左键按下 
		MessageBox(hwnd,"鼠标点击","消息",0);
		HDC hdc;
		hdc=GetDC(hwnd);
		TextOut(hdc,0,50,"再见",strlen("再见"));
		ReleaseDC(hwnd,hdc);
		break;
	case WM_PAINT://窗口绘制
		HDC hDC;
		PAINTSTRUCT ps;
		hDC=BeginPaint(hwnd,&ps);
		TextOut(hDC,0,0,"你好",strlen("你好"));
		EndPaint(hwnd,&ps);
		break;
	case WM_CLOSE://关闭窗口
		if(IDYES==MessageBox(hwnd,"是否真的结束?","消息",MB_YESNO))
		{
			DestroyWindow(hwnd);
		}
		break;
	case WM_DESTROY://窗口销毁
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd,uMsg,wParam,lParam);
	}
	return 0;
}

四、运行结果

打开窗口
打开窗口
鼠标点击窗口空白处

鼠标点击窗口空白处

按下键盘Q
按下键盘Q

关闭窗口
关闭窗口

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值