⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5_9.cpp

📁 编写一程序
💻 CPP
字号:
  
//   HELLO60.C -- Displays "Hello,VC++ 6.0!" in client area

#include <windows.h>//包括了windows函数和数据类型,结构,常量,宏

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM) ;//Wndproc是窗口过程函数名

int WINAPI WinMain(		//windows希望winmain使用通用的API函数调用约定
	HINSTANCE hInstance,	//当前实例句柄
	HINSTANCE hPrevInstance,//前一个实例句柄
        LPSTR lpszCmdParam,	//指向字符串的指针,这里指向存放内存运行程序名的缓冲区
	int nCmdShow)		//应用程序开始执行时窗口的显示方式,常用SW_SHOWNORMAL
{
 static char szAppName[] = "Hello60" ;	//窗口类的名字,经常为程序名
 HWND        hwnd ;			//窗口句柄
 MSG         msg ;			//消息结构类
 WNDCLASS    wndclass ;			//窗口类

 if(!hPrevInstance)				
    {
     wndclass.style = CS_HREDRAW | CS_VREDRAW ;//定义窗口类型为整个窗口重画
     wndclass.lpfnWndProc= WndProc ;		//窗口处理函数
     wndclass.cbClsExtra = 0 ;			//不留额外类结构空间(窗口类无扩展)
     wndclass.cbWndExtra = 0 ;			//不留额外窗口结构空间(窗口实例无扩展)
     wndclass.hInstance = hInstance ;		//设置winmain的第一个参数
     wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);//IDI_APPLICATION为窗口最小化确省图标
     wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;//定义窗口采用IDC_ARROW(箭头)光标
     wndclass.hbrBackground = (HBRUSH)GetStockObject (LTGRAY_BRUSH) ;//窗口客户区的背景为浅灰色
     wndclass.lpszMenuName  = NULL ;	//应用程序窗口中没有菜单,所以菜单名为NULL
     wndclass.lpszClassName = szAppName ;//窗口类的名字,一般应和程序名字一样
     RegisterClass (&wndclass) ;//这个函数用来注册窗口类
    }

     hwnd = CreateWindow (				//该函数创建一个窗口实例
			szAppName,			// window class name
			"The Hello Program",		// 窗口实例标题名
                    	WS_OVERLAPPEDWINDOW,		// window style
                    	CW_USEDEFAULT,CW_USEDEFAULT,	// 窗口左上角坐标 
                    	CW_USEDEFAULT,CW_USEDEFAULT,	// 窗口的高和宽
                    	NULL,				// parent window handle
                    	NULL,				// window menu handle
                    	hInstance,			// program instance handle of current window
			NULL);				// creation parameters

     ShowWindow (hwnd, nCmdShow) ;			//nCmdShow标志显示方式
     UpdateWindow (hwnd) ;				//绘制用户区,发送WM_PAINT消息

     while (GetMessage (&msg, NULL, 0, 0))//取得消息,除受到WM_QUIT外,任何消息都返回TRUE
          {
          TranslateMessage (&msg) ;		//对一些键盘消息进行翻译
          DispatchMessage (&msg) ;		//将消息传送给在MSG结构中为窗口所指定的消息处理器
          }
     return msg.wParam ;				//程序终止时告知系统
 }

LRESULT CALLBACK WndProc( HWND hwnd,	//接收消息的窗口句柄
			  UINT message, //调用的消息号
			  WPARAM wParam,//消息参数
			  LPARAM lParam)//消息参数
{
     HDC         hdc ;		//设备句柄
     PAINTSTRUCT ps ;		//画刷结构
     RECT	 rect ;		//无效矩形区
     static LOGFONT lf;			
     HFONT holdFont,hnewFont;	

     switch (message)		//消息处理函数
      {   
       case WM_CREATE:		//窗口创建,返回0
        return 0;

		case WM_PAINT:										//绘制消息
			lf.lfHeight=-64;	
			lf.lfWeight=500;	
			lf.lfPitchAndFamily=DEFAULT_PITCH & FF_DONTCARE;
			lf.lfCharSet=GB2312_CHARSET;						//选择字符集				
			strcpy(lf.lfFaceName,"黑体");					//字符串赋值,设置字体
			hnewFont=CreateFontIndirect(&lf);					//创建一种新的逻辑字体
			hdc = BeginPaint (hwnd, &ps);					//得到设备环境句柄        	GetClientRect (hwnd, &rect);						//得到需要绘制的客户区
			GetClientRect (hwnd, &rect) ;			//得到需要绘制的客户区
			holdFont=(HFONT)SelectObject(hdc,hnewFont);		//选择新的字体格式,并且保存老的画笔
			SetTextColor(hdc,RGB(255,0,0));					//设置文本颜色
			SetBkColor(hdc,RGB(255,255,0));					//设置背景颜色

			DrawText(hdc,									//输出文本
				 "VC中显示字体与背景",						//输出的字符串
	 			 -1,										//自动计算输出字符的个数
				&rect,									//输出文本区区域
				DT_SINGLELINE|DT_CENTER|DT_VCENTER);			//字体输出在矩形客户区的中央
	 		SelectObject(hdc,holdFont);						//保存原来的字体格式

			DeleteObject(hnewFont);							//删除新的字体格式
			EndPaint (hwnd, &ps) ;						//结束绘制,与BeiginPaint函数配套
        	return 0 ;

       case WM_DESTROY:		//退出消息
        PostQuitMessage (0) ;	//告诉系统退出程序
        return 0 ;  
}
  return DefWindowProc(hwnd,message,wParam,lParam) ;//调用默认函数处理没有处理的消息
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -