前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VC++6.0入门——第一讲,认识VC++6.0,新建工程等

VC++6.0入门——第一讲,认识VC++6.0,新建工程等

原创
作者头像
Arya
发布2024-11-12 21:01:28
970
发布2024-11-12 21:01:28
举报
文章被收录于专栏:后端开发专栏

正文开始前推荐去阅读的文章,感兴趣的去阅读哦!

今日推荐:为什么网站安装SSL证书后HTTPS还是不能访问

推荐链接:https://cloud.tencent.com/developer/article/2465228

推荐原因:本文详细说明了自己安装了SSL证书后还是报错,下面我来说一下我的解决办法。

引出


VC++6.0入门——第一讲,认识VC++6.0,新建工程等

第一讲笔记

接触过Windows编程方法的读者都知道,在应用程序中有一个重要的函数WinMain,这个函数是应用程序的基础。当Windows操作系统启动一个程序时,它调用的就是该程序的WinMain函数(实际是由插入到可执行文件中的启动代码调用的)。WinMain是Windows程序的入口点函数,与DOS程序的入口点函数main的作用相同,当WinMain函数结束或返回时,Windows应用程序结束。

比如加入一个程序变量

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

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

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

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

关于程序运行时的图标,可以参考下面进行设置

去掉最小化窗口的按钮

代码语言:java
复制
WS_OVERLAPPEDWINDOW & ~WS_MINIMIZEBOX

窗口创建时的位置,缺省值表示自己找一个位置

键盘按下的消息

鼠标左键按下

15~21行代码:当用户在窗口中按下鼠标左键时,将产生WM LBUTTONDOWN消息。为了证实这一点,我们在WM LBUTTONDOWN消息的响应代码中,调用MessageBox函数弹出一个提示信息,告诉用户“点击了鼠标”。接下来,我们在窗口中(0,50)的位置处输出一行文字。要在窗口中输出文字或者显示图形,需要用到设备描述表(Device Context),简称DC。DC是一个包含设备(物理输出设备,如显示器,以及设备驱动程序)信息的结构体,在Windows平台下,所有的图形操作都是利用DC来完成的。

报错

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

表示当前在运行一个没法继续运行

源码

代码语言:c++
复制
#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;
}

新建一个工程

1.启动Microsoft Visual C++6.0,单击【File】菜单,选择【New】菜单项,在“Projects”选项卡下,选择“Win32 Application”,在右侧的“Project name:”文本框中,输入我们的工程名WinMain(如图1.4所示),单击【OK】按钮。

2.在Win32 Application-Step1of1中,选择“An empty project”(如图1.5所示),单击【Finish】按钮。

3出现一个工程信息窗口,单击【OK】按钮,这样就生成了一个空的应用程序外壳。

4.这样的应用程序外壳并不能做什么,甚至不能运行,我们还要为它加上源文件。单击【File】菜单,选择【New】,在“Files”选项卡下,选择“C++Source File”,在右侧的“File”文本框中,输入源文件的文件名WinMain(如图1.6所示),单击【OK】按钮.


总结

VC++6.0入门——第一讲,认识VC++6.0,新建工程等

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引出
  • 第一讲笔记
    • 键盘按下的消息
      • 鼠标左键按下
        • 报错
          • 源码
            • 新建一个工程
            • 总结
            相关产品与服务
            消息队列
            腾讯云消息队列 TDMQ 是分布式架构中的重要组件,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性。TDMQ 产品系列提供丰富的产品形态,包含 CKafka、RocketMQ、RabbitMQ、Pulsar、CMQ 五大产品,覆盖在线和离线场景,满足金融、互联网、教育、物流、能源等不同行业和场景的需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档