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

2026-07-20 12:01:12 7032

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

今日推荐:为什么网站安装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

#include

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,新建工程等