目录
- 引出
- 环境准备,参考文档
- 第一讲 初步入门
- 键盘按下的消息
- 鼠标左键按下
- 报错
- 源码
- 新建一个工程
- 总结
引出
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 windowUINT uMsg, // message identifierWPARAM wParam, // first message parameterLPARAM lParam // second message parameter
);int WINAPI WinMain(HINSTANCE hInstance, // handle to current instanceHINSTANCE hPrevInstance, // handle to previous instanceLPSTR lpCmdLine, // command lineint nCmdShow // show state
)
{// 1.设置了一个窗口,定义窗口的一些信息WNDCLASS wndcls; // 窗口实例wndcls.cbClsExtra=0; // 窗口附加内存空间,通常设置为0wndcls.cbWndExtra=0; // 通常用不上,设置为0即可// 进行强制类型转换wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); // 窗口的背景颜色wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); // 光标句柄,这里光标就是十字 crosswndcls.hIcon=LoadIcon(NULL,IDI_ERROR); // 图标句柄,这里就是一个errorwndcls.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);// 显示窗口,正常显示normalShowWindow(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 windowUINT uMsg, // message identifierWPARAM 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++