VC++学习(1)——环境准备,参考文档等,初步入门VC++

在这里插入图片描述

引出

VC++学习(1)——环境准备,参考文档等,初步入门VC++

C++是一门编程语言,他的语法标准和语言特性是全球统一的

VC++是微软在C++语言基础上加入了自己公司扩展的一些东西

VC++是基于微软开发的编译器系统(例如Visual C++ 6.0编译系统,visual studio)和windows操作系统,也就是说你离开微软的编译环境是没有办法进行VC++开发的

VC++可以简单的视为 :

C++语言+微软扩展的语法规则+微软扩展的功能特性+微软自己开发的编译环境+windows操作系统 的一个混杂的复合体


环境准备,参考文档

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安装好的VC++

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

msdn参考文档

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择SDK

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

教材对应的视频和源代码

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

flash文件打不开问题

https://github.com/Mzying2001/CefFlashBrowser/releases

https://www.bilibili.com/list/ml847383748?oid=31626251&bvid=BV1AW411y7ad&p=3

第一讲 初步入门

比如加入一个程序变量

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

设置一个断点,鼠标右键,加入断点

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

采用调试运行F5快捷键,或者点击图示图标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

程序运行的时候,接收到了命令行参数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

点击图示按钮,可以停止程序调试

在这里插入图片描述

程序的图标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

去掉最小化窗口的按钮

WS_OVERLAPPEDWINDOW & ~WS_MINIMIZEBOX

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于窗体的位置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

键盘按下的消息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

鼠标左键按下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

报错

LINK : fatal error LNK1168: cannot open Debug/WinMain.exe for writing

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

源码

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

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,          // command line
  int nCmdShow              // show state
)
{
	// 1.设置了一个窗口,定义窗口的一些信息
	WNDCLASS wndcls; // 窗口实例
	wndcls.cbClsExtra=0; // 窗口附加内存空间,通常设置为0
	wndcls.cbWndExtra=0; // 通常用不上,设置为0即可
	// 进行强制类型转换
	wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); // 窗口的背景颜色
	wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); // 光标句柄,这里光标就是十字 cross
	wndcls.hIcon=LoadIcon(NULL,IDI_ERROR); // 图标句柄,这里就是一个error
	wndcls.hInstance=hInstance; // 代表当前应用程序的实例号
	wndcls.lpfnWndProc=WinSunProc; // 回调函数
	wndcls.lpszClassName="sunxin2006"; // 类的名字
	wndcls.lpszMenuName=NULL; // 没有菜单
	wndcls.style=CS_HREDRAW | CS_VREDRAW; // 水平和垂直坐标变化,窗口重画
	RegisterClass(&wndcls); // 注册窗口类,把窗口类的指针给他

	HWND hwnd; // 窗口的句柄
	// 注册的类名,WS_OVERLAPPEDWINDOW同时有了最大化,最小化按钮等
	hwnd=CreateWindow("sunxin2006","跟着大佬学习VC++",
		WS_OVERLAPPEDWINDOW & ~WS_MINIMIZEBOX /*& ~WS_MINIMIZEBOX */,
		0,0,600,400,NULL,NULL,hInstance,NULL);

	// 显示窗口,正常显示normal
	ShowWindow(hwnd,SW_SHOWNORMAL);
	UpdateWindow(hwnd);

	// 消息队列
	MSG msg;
	while(GetMessage(&msg,NULL,0,0)) // 0表示所有信息都感兴趣
	{
		// 按键的按下和抬起,转化成WM_CHAR,放到消息队列中
		TranslateMessage(&msg);
		// 将消息路由给操作系统,操作系统给wndcls.lpfnWndProc=WinSunProc; // 回调函数进行处理
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

// 回调函数
LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter 都是整数
  LPARAM lParam   // second message parameter
)
{
	switch(uMsg)
	{
	case WM_CHAR: // 用户按下了按键
		char szChar[20];
		// sprintf,格式化文本放到字符数组中
		sprintf(szChar,"char code is %d",wParam);
		MessageBox(hwnd,szChar,"char",MB_YESNO);
		break;
	case WM_LBUTTONDOWN:
		MessageBox(hwnd,"mouse clicked","message",0);
		HDC hdc;
		// 在哪里画图
		hdc=GetDC(hwnd);
		// 参数:在哪里,位置,输入文字,文字长度
		TextOut(hdc,0,50,"程序员之家",strlen("程序员之家"));
		// 释放DC,
		ReleaseDC(hwnd,hdc);
		break;
	// 窗口大小发生变化
	case WM_PAINT:
		HDC hDC;
		PAINTSTRUCT ps;
		// BeginPaint 和 EndPaint 是一对,只能用在WM_PAINT中
		hDC=BeginPaint(hwnd,&ps);
		TextOut(hDC,0,0,"http://www.sunxin.org",strlen("http://www.sunxin.org"));
		EndPaint(hwnd,&ps);
		break;
	// 窗口关闭的时候的消息
	case WM_CLOSE:
		if(IDYES==MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))
		{
			DestroyWindow(hwnd);
		}
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		// 对其不感兴趣的进行缺省处理
		return DefWindowProc(hwnd,uMsg,wParam,lParam);
	}
	return 0;
}

新建一个工程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


总结

VC++学习(1)——环境准备,参考文档等,初步入门VC++

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Arya's Blog

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值