xml地图|网站地图|网站标签 [设为首页] [加入收藏]

正规赌博平台

当前位置:网上十大正规赌博平台 > 正规赌博平台 > C语言编制程序学习构建提亲神器,C语言塑造招亲

C语言编制程序学习构建提亲神器,C语言塑造招亲

来源:http://www.nb-machinery.com 作者:网上十大正规赌博平台 时间:2019-10-04 13:54

图片 1图片 2

第一章:编译器和程序

图片 3

废话不多说 直接上代码:

很多小伙伴都老是会碰到疑问,其实还是基础没打扎实,这些题如果你不看答案你能知道多少呢?如果还有很多不知道就证明基础没打扎实,如果你还在入门纠结,如果你还在苦恼怎么入门!,最下面+新手入门资料,可以说从零到项目实战,都是可以免费获取的,还有程序员大牛为各位免费解答问题,热心肠的小伙伴也是蛮多的。不失为是一个交流的的好地方,小编在这里邀请大家加入我的大家庭。欢迎你的到来。一起交流学习!共同进步!小编等你!

这个程序是专门为2017情人节而开发的,是在之前程序的基础上,进行的总结和改进,使界面变得更加酷炫的梦幻,还增加了些许的浪漫气息,很适合表白和装逼使用。

// MFCApplication2Dlg.cpp : 实现文件

在学编程之前,我要提到两个问题,我们都说计算机很强大,它究竟强大到什么地步了,比如说飞天遁地它会吗?你见过遥控飞机吗,有人说那是小玩意,那无人驾驶飞机呢?再比如说它能造原子弹吗?仿真实验室知道不,1996年9月10日的联合国大会,以158票赞成、3票反对通过了《全面禁止核试验条约》,该条约的通过只能说明核竞赛在实爆方面的结束,计算机模拟仿真却是一种有效的核试验方式。第一个我要问大家的问题是,计算机不能做什么?这个问题需要大家以后去发现;第二个问题是为什么学计算机要学编程?首先问问自己为什么要学计算机,想开发软件,想当黑客,或做一个游戏,或做一个网站,哪样是不需要编程的,这是永远都不能回避的一个问题,编程才是计算机的精髓。

由于这个程序酷炫,而且实现原理和编码都不难,。如果你已经学过C或C ,那么只要跟着教程一步步操作,就完全可以在两三天之内理解并实现出这个小程序。那么2018年5月20日快到了,你完全可以自己实现一个这样的小程序。

//

我们说语言是表达自己思想的工具,但是语言又分好多种,有汉语、英语、西班牙语、缅甸语...如果一个只懂英语和只懂缅甸语的两个人碰头了,那他们改怎么交流呢,这时候就需要翻译了,计算机底层只能识别0和1组成的代码,对于计算机来讲它的语言就是0、1代码,假设我们学的是C语言,那要想让我们的C语言能够让计算机理解,这时候我们也需要一个翻译,这个翻译就是C编译器,当然还有其他很多语言的编译器(比如C 编译器、Delphi编译器),这里涉及到3个问题我要讲清楚,

效果:

#include "stdafx.h"

1是我们能够把计算机识别的0、1代码转换成其他语言吗?可以,但是这个难度比较大,需要通过大量的学习,不适合初学者学习,通常我们把这个过程叫做逆向。

图片 4

#include "MFCApplication2.h"

2是我们的编译器都是把计算机语言翻译成机器语言吗?不是,有些会翻译成一些中间语言,比如java的编译器会把java代码翻译成Java虚拟机能够识别的代码,然后由Java虚拟机去把这个代码转换成机器语言来执行,所以如果不管中间过程,最终所有的代码都会被翻译成计算机能够识别的机器语言。

注意点:

#include "MFCApplication2Dlg.h"

3是我们为什么不使用能够把我们的汉语转换成机器语言的编译器?因为汉语和其他我们人类使用的语言一样,它们是有歧义的,同样的一句话可能有两种或多种意思,计算机不能识别歧义,所以必须约定一套计算机能够完全识别的语言,所以就算计算机是美国人发明的,它们也并没有发明出能够直接使用英语来编写程序的编译器(需要说明的是易语言这样的并不属于真正的汉语编程语言)。

此图是动态图,以实物为准,画是动态,蝴蝶也是动态的。

#include "afxdialogex.h"

所以从开始学习C语言时,我们需要的仅仅是一个翻译,我在下面会给出三个编译器链接:

功能:

#include "mmsystem.h"

C-Free、Dev-C 、VC6.0,当然我电脑上还有VS2013和VS2015和VS2017。

1.窗口透明;

#include "Resource.h"

尽管很不情愿,但为了防止部分同学不会安装软件,我还是演示下怎么安装编译器(以C-Free为例),我是在虚拟机里面演示的,虽然是虚拟机,但其实是在自己电脑上虚拟出来的一台电脑,和真机没有任何区别。下载编译器完成后,右键此文件,选择解压到CFree5pro文件夹

2.显示位图;

#pragma comment(lib,"winmm.lib")

图片 5

开发环境:VS2013

#ifdef _DEBUG

打开CFree5pro文件夹会发现这样两个文件,c-free5_0_pro这个是安装程序,注册码是待会注册要用的

开发语言:MFC C/C

#define new DEBUG_NEW

图片 6

主要代码:

#endif

点击c-free5_0_pro出现安装界面后,直接点下一步

/*

// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

图片 7

设计想法是:

class CAboutDlg : public CDialogEx

选择“我同意此协议”,继续点下一步

  1. 然后再顺时针方向依次显示心形花儿;

  2. 在心形图案的中心,显示一朵更大的花儿;

  3. 绘制蝴蝶飞舞;

  4. 在心形图案的下方显示祝福语和署名;

{

图片 8

*/

public:

接下来出现程序安装目录,这个我一般是选择D:Program Files,但是这里为了方便就不更改了,继续点下一步

int i = 0, j = 0;

CAboutDlg();

图片 9

// 花儿图片参数

// 对话框数据

然后再点击几次下一步,来到安装的最后界面,这里点安装就开始安装编译器了。

int iElapseSlow = 2000; // 停顿时间间隔

enum { IDD = IDD_ABOUTBOX };

图片 10

int iElapseFast = 1500; // 停顿时间间隔

protected:

等安装的绿条走完后,来到了是否运行C-Free编译器,直接点完成编译器就跑起来了。

int iFirstFlowerWidth = 450;

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持

图片 11

int iFirstFlowerHeight = 356;

// 实现

先把这个新建工程的对话框点关闭了,因为C-Free不是免费软件,所以这时候我们用的还只是试用版的,这时候我们选择编译器上面一排的“帮助”,在弹出的下拉列表中选择“注册”。

int iFirstNumFrame = 21;

protected:

图片 12

int iFirstNumFlowering = 7;

DECLARE_MESSAGE_MAP()

把我们之前的那个注册码文件打开,把这里面的三项用户名、邮箱和注册码分别拷贝到C-Free的三个输入框里面去,点击确定就可以了,这时候它会要求你重启编译器,点击之后再重新点击桌面的C-free编译器就ok了。

int iSecondFlowerWidth = 250;

};

图片 13

int iSecondFlowerHeight = 198;

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

然后接下来开始我们的第一个程序,选择C-Free上面的工程->新建,windows下的编译器都差不多,反正一般都是在文件或者工程里面选择新建一个工程

int iSecondNumFrame = 25;

{

图片 14

int iSecondNumFlowering = 8;

}

在弹出框中要说明三项,一个是要新建的工程类型,我们这里选择“控制台程序”就好(这种程序就是黑框框界面的那种,后面还有窗口程序、链接库,我发现C-Free后面的GUI toolkits里面还有QT项目)。工程名称是你的程序的名称,我这里写的是HelloWorld1,第三项就是保持位置,我这里是默认保存在桌面,我就不管了,这三项弄好后就直接点确定了

// 获取屏幕宽和高

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

图片 15

int iWidth = ::GetSystemMetrics(SM_CXSCREEN);

{

然后接下来会选择控制台程序的类型,我们选第三个“Hello,World程序”(因为这样编译器会自动帮我们生成HelloWorld的代码,因为我们还没有讲语法,就先让编译器自己帮我们生成一个好了),点下一步

int iHeight = ::GetSystemMetrics(SM_CYSCREEN);

CDialogEx::DoDataExchange;

图片 16

// 初始化

}

然后会弹出语言选择,我们是默认的C语言就行了,点下一步

for (i = 0; i

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)

图片 17

{

END_MESSAGE_MAP()

然后会弹出一个构建配置,这个意思就是C-Free默认内嵌的编译器,所以不要认为写出C-Free这样的编译器就一定有多厉害了,其实只是内嵌了一个MinGW编译器啦,以后如果大家想学的话,我会教大家怎么从零开始写编译器,不需要依靠别人内嵌编译器。这里直接点完成就行了。

m_myFlower[i].myFlower.Init(IDB_BITMAP2, 0, 0, iSecondNumFrame, iSecondNumFlowering);

// CMFCApplication2Dlg 对话框

图片 18

m_myFlower[i].myFlower.SetWidthHeight(iSecondFlowerWidth, iSecondFlowerHeight);

CMFCApplication2Dlg::CMFCApplication2Dlg(CWnd* pParent /*=NULL*/)

接下来请看编译器的右边会出现一个文件列表,这里面有三个文件夹Source Files、Header Files、Other Files以及一个main.c文件,这就是编译器自动为我们生成的文件,如果我们之前在48那个图里面选择空的程序就不会有一个文件了。点击main.c文件打开看看

}

: CDialogEx(CMFCApplication2Dlg::IDD, pParent)

图片 19

// 设置显示坐标位置

{

我们在这里就可以看到main.c里面写的C源代码了。

m_myFlower[0].myFlower.SetPosXY;

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

图片 20

m_myFlower[1].myFlower.SetPosXY((iWidth - iSecondFlowerWidth), 0);

}

接下来点击构建->运行,这里直接点运行其实编译器是执行了三步操作,第一步是编译,就是把main.c这个文件转换成main.o文件,第二步是链接,C-Free编译器这里叫构建,就是把main.o文件可一些库文件链接成HelloWorld1.exe文件,第三步才是运行,效果就相当于我们点击了HelloWorld1.exe这个文件一样,我们有时候可能并不需要直接点构建->运行把这三步全做完了,比如我们写一个病毒的时候,我们只需要执行到第二步就可以了,因为第三步再执行的话我们自己的电脑就要中招了。这里直接点运行就是为了方便啦

m_myFlower[2].myFlower.SetPosXY((iWidth - iSecondFlowerWidth), (iHeight - iSecondFlowerHeight));

void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX)

图片 21

m_myFlower[3].myFlower.SetPosXY(0, (iHeight - iSecondFlowerHeight));

{

点击运行之后就是我们程序运行的结果了

// 显示

CDialogEx::DoDataExchange;

图片 22

for (i = 0; i

}

我们可以进入我们在47楼填写的保持位置,我填的是桌面,我在桌面就能找到文件名为HelloWorld1的文件夹,mingW5文件夹里面有两个文件main.o和HelloWorld1.exe,这两个文件就是编译器编译文件的第一步和第二步分别生成的文件,点击这里的HelloWorld1.exe也会出来同样的效果

{

BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)

图片 23

m_myFlower[i].bExist = TRUE;

ON_WM_SYSCOMMAND()

Dev-C 版本:

Sleep(iElapseSlow); // 停顿

ON_WM_PAINT()

其实它们新建项目都是类似的过程,具体步骤我就不写了,我就贴几张图出来了

}

ON_WM_QUERYDRAGICON()

图片 24图片 25图片 26图片 27

// 2. 然后再顺时针方向依次显示心形花儿

ON_BN_CLICKED(IDC_BUTTON_TEST, &CMFCApplication2Dlg::OnBnClickedButtonTest)

这里需要新建一个文件夹,不如C-Free那么方便,我新建的文件夹就叫HelloWorld2了

/*

END_MESSAGE_MAP()

图片 28

将屏幕一部分看成是8x8的格子,则心形图案为:

// CMFCApplication2Dlg 消息处理程序

然后点进去HelloWorld2再点保存,dev-C 就会把HelloWorld2.dev这个文件放到HelloWorld2文件夹里面去

* * * * * * * *

BOOL CMFCApplication2Dlg::OnInitDialog()

图片 29

* O O * O O * *

{

这里同样可以看到main.c源代码和左边的文件列表(c-free是在右边),不过我们点击运行->运行后出来的黑框里面并没有"Hello"相关的信息,因为编译器并没有帮我们生成。

O * * O * * O *

CDialogEx::OnInitDialog();

图片 30

O * * * * * O *

// 将“关于...”菜单项添加到系统菜单中。

这里我们就需要在main.c文件里添加printf("hello,world!");这一行,它的意思就是打印出hello,world!

* O * * * O * *

// IDM_ABOUTBOX 必须在系统命令范围内。

图片 31

* * O * O * * *

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

添加这行代码后再点击运行->编译运行就能出来结果了。

* * * O * * * *

ASSERT(IDM_ABOUTBOX

图片 32

* * * * * * * *

CMenu* pSysMenu = GetSystemMenu;

VC6.0的我就先不讲了,其他都差不多,我的建议是如果你电脑上能装VC6.0的话就尽量装它,毕竟它是有工业强度的编译器,而且网上许多源码都是在VC编译器的平台上开发的(当然如果你能安装更高版本的VC编译器当然更高,我电脑上就有vs2013和vs2015和vs2017),如果你VC6.0装不上那就装c-free吧,也比较方便,dev-C 不算很方便。

由于电脑屏幕大都是长方形,若屏幕高为iScreenHeight,

if (pSysMenu != NULL)

图片 33图片 34

则我们就截取iScreenHeight x iScreenHeight 的区域

{

今天就讲到这里,欲知后事如何且听下回分解~

划分为8x8的格子!

BOOL bNameValid;

各个心形的坐标位置都可以计算出来!

CString strAboutMenu;

先绘制左半边,在绘制右半边

bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);

*/

ASSERT(bNameValid);

// 计算

if (!strAboutMenu.IsEmpty

int iPerImageWidth = iHeight / 8;

{

int iPerImageHeight = iHeight / 8;

pSysMenu->AppendMenu(MF_SEPARATOR);

int x = ((iWidth - iHeight) / 2) (iPerImageWidth / 2);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

int y = 0;

}

// 初始化

}

for (i = 4; i

// 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动

{

// 执行此操作

m_myFlower[i].myFlower.Init(IDB_BITMAP1, x, y, iFirstNumFrame, iFirstNumFlowering);

SetIcon(m_hIcon, TRUE);// 设置大图标

m_myFlower[i].myFlower.SetWidthHeight(iPerImageWidth, iPerImageHeight);

SetIcon(m_hIcon, FALSE);// 设置小图标

}

// TODO: 在此添加额外的初始化代码

// 设置显示坐标位置

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE

m_myFlower[4].myFlower.SetPosXY((x 3*iPerImageWidth), (y 2*iPerImageHeight));

}

m_myFlower[5].myFlower.SetPosXY((x 2 * iPerImageWidth), (y 1 * iPerImageHeight));

void CMFCApplication2Dlg::OnSysCommand(UINT nID, LPARAM lParam)

m_myFlower[6].myFlower.SetPosXY((x 1 * iPerImageWidth), (y 1 * iPerImageHeight));

{

m_myFlower[7].myFlower.SetPosXY((x 0 * iPerImageWidth), (y 2 * iPerImageHeight));

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

m_myFlower[8].myFlower.SetPosXY((x 0 * iPerImageWidth), (y 3 * iPerImageHeight));

{

m_myFlower[9].myFlower.SetPosXY((x 1 * iPerImageWidth), (y 4 * iPerImageHeight));

CAboutDlg dlgAbout;

m_myFlower[10].myFlower.SetPosXY((x 2 * iPerImageWidth), (y 5 * iPerImageHeight));

dlgAbout.DoModal();

m_myFlower[11].myFlower.SetPosXY((x 3 * iPerImageWidth), (y 6 * iPerImageHeight));

}

m_myFlower[12].myFlower.SetPosXY((x 4 * iPerImageWidth), (y 1 * iPerImageHeight));

else

m_myFlower[13].myFlower.SetPosXY((x 5 * iPerImageWidth), (y 1 * iPerImageHeight));

{

m_myFlower[14].myFlower.SetPosXY((x 6 * iPerImageWidth), (y 2 * iPerImageHeight));

CDialogEx::OnSysCommand(nID, lParam);

m_myFlower[15].myFlower.SetPosXY((x 6 * iPerImageWidth), (y 3 * iPerImageHeight));

}

m_myFlower[16].myFlower.SetPosXY((x 5 * iPerImageWidth), (y 4 * iPerImageHeight));

}

m_myFlower[17].myFlower.SetPosXY((x 4 * iPerImageWidth), (y 5 * iPerImageHeight));

// 如果向对话框添加最小化按钮,则需要下面的代码

// 显示

// 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,

for (i = 4; i

// 这将由框架自动完成。

{

void CMFCApplication2Dlg::OnPaint()

m_myFlower[i].bExist = TRUE;

{

Sleep(iElapseFast); // 停顿

if (IsIconic

}

{

// 3. 在心形图案的中心,显示一朵更大的花儿

CPaintDC dc; // 用于绘制的设备上下文

m_myFlower[18].myFlower.Init(IDB_BITMAP1, ((x 3 * iPerImageWidth)

SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc;

  • iPerImageWidth / 2) - (iFirstFlowerWidth / 2) ,

// 使图标在工作区矩形中居中

((y 3 * iPerImageHeight) iPerImageHeight / 2) - (iFirstFlowerHeight / 2), iFirstNumFrame, iFirstNumFlowering);

int cxIcon = GetSystemMetrics(SM_CXICON);

m_myFlower[18].myFlower.SetWidthHeight(iFirstFlowerWidth, iFirstFlowerHeight);

int cyIcon = GetSystemMetrics(SM_CYICON);

m_myFlower[18].bExist = TRUE;

CRect rect;

Sleep(iElapseSlow); // 停顿

GetClientRect(&rect);

// 4. 绘制蝴蝶飞舞

int x = (rect.Width() - cxIcon 1) / 2;

m_myButterfly.myButterfly.Init(IDB_BITMAP3, 0, 0, 37, 0);

int y = (rect.Height() - cyIcon 1) / 2;

m_myButterfly.myButterfly.SetWidthHeight(iWidth, iHeight);

// 绘制图标

m_myButterfly.bExist = TRUE;

dc.DrawIcon(x, y, m_hIcon);

Sleep(iElapseSlow); // 停顿

}

// 5. 在心形图案的下方显示祝福语和署名

else

// 祝福语

{

m_myBless.myButterfly.Init(IDB_BITMAP4, (x 1 * iPerImageWidth), (y

CDialogEx::OnPaint();

  • 5 * iPerImageHeight), 1, 0);

}

m_myBless.myButterfly.SetWidthHeight((6 * iPerImageWidth), iPerImageHeight);

}

m_myBless.bExist = TRUE;

//当用户拖动最小化窗口时系统调用此函数取得光标

Sleep(iElapseSlow); // 停顿

//显示。

// LOGO

HCURSOR CMFCApplication2Dlg::OnQueryDragIcon()

m_myLogo.myButterfly.Init(IDB_BITMAP5, (x 6 * iPerImageWidth), (y 1 * iPerImageHeight), 1, 0);

{

//m_myLogo.myButterfly.SetWidthHeight();

return static_cast;

m_myLogo.bExist = TRUE;

}

以上为部分源码,由于使用的是MFC编写的,生成代码过多,就不一一粘贴出来了.学习源于兴趣,其实从做这种小东西开始。慢慢的越学越有意思,如果阁下正处学习阶段,不妨参详,让学编程既有浪漫,又有丰富内容。

BOOL g_bStop = FALSE;

图片 35图片 36图片 37

BOOL PaintFlower(int x, int y)

{

// 获取桌面的绘图设备并创建兼容设备

HWND hDesk = ::GetDesktopWindow();

HDC hDC = ::GetDC;

HDC hMD = ::CreateCompatibleDC;

HDC hBuf = ::CreateCompatibleDC;

// 获取桌面宽和高

DWORD dwWidth = ::GetSystemMetrics(SM_CXSCREEN);

DWORD dwHeight = ::GetSystemMetrics(SM_CYSCREEN);

// 加载位图资源

HBITMAP tempbmp, oldtempbmp, bmp, oldbmp;

tempbmp = ::CreateCompatibleBitmap(hDC, dwWidth, dwHeight);

bmp = ::LoadImage(::GetModuleHandle, MAKEINTRESOURCE(IDB_FLOWERS), IMAGE_BITMAP, 0, 0, NULL);

// 选中资源

oldtempbmp = ::SelectObject(hMD, tempbmp);

oldbmp = ::SelectObject(hBuf, bmp);

本文由网上十大正规赌博平台发布于正规赌博平台,转载请注明出处:C语言编制程序学习构建提亲神器,C语言塑造招亲

关键词: ag娱乐平台

上一篇:C语言经典算法,反码和补码

下一篇:没有了