怎么在C语言控制台程序中插入背景图

怎么在C语言控制台程序中插入背景图,第1张

C语言写控制台程序是无法加的,只能用命令行输出,最多就是设置下背景和字体,颜色之类的。如果开发API窗口程序,完全依赖于 *** 作系统的函数库。C语言本身并不提供这类函数。

下面是windows系统下实现的函数代码,第一个参数是的存放的位置,第二个参数是窗口句柄。

HRESULT ShowPic(char lpstrFile,HWND hWnd)

{

HDC hDC_Temp=GetDC(hWnd);

IPicture pPic;

IStream pStm;

BOOL bResult;

HANDLE hFile=NULL;

DWORD dwFileSize,dwByteRead;

//打开图形文件

hFile=CreateFile(lpstrFile,GENERIC_READ,

FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

if (hFile!=INVALID_HANDLE_VALUE)

{

dwFileSize=GetFileSize(hFile,NULL);//获取文件字节数

if (dwFileSize==0xFFFFFFFF)

return E_FAIL;

}

else

{

return E_FAIL;

}

//分配全局存储空间

HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);

LPVOID pvData = NULL;

if (hGlobal == NULL)

return E_FAIL;

if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块

return E_FAIL;

ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件读入内存缓冲区

GlobalUnlock(hGlobal);

CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);

//装入图形文件

bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID)&pPic);

if(FAILED(bResult))

return E_FAIL;

OLE_XSIZE_HIMETRIC hmWidth; //的真实宽度, 单位为英寸 

OLE_YSIZE_HIMETRIC hmHeight; //的真实高度, 单位为英寸

pPic->get_Width(&hmWidth);

pPic->get_Height(&hmHeight);

//转换hmWidth和hmHeight为pixels距离,1英寸=254毫米

int nWidth = MulDiv(hmWidth,GetDeviceCaps(hDC_Temp,LOGPIXELSX),2540);

int nHeight = MulDiv(hmHeight,GetDeviceCaps(hDC_Temp,LOGPIXELSY),2540);

//将图形输出到屏幕上(有点像BitBlt)

bResult=pPic->Render(hDC_Temp,0,0,nWidth,nHeight,0,hmHeight,hmWidth,-hmHeight,NULL);

hmHeight,NULL);

pPic->Release();

CloseHandle(hFile);//关闭打开的文件

if (SUCCEEDED(bResult))

{

return S_OK;

}

else

{

return E_FAIL;

}

}

在下面这两个路径中添加:

Tools -> Options -> Projects and Solutions -> VC++ Directories -> Include Directories

Tools -> Options -> Projects and Solutions -> VC++ Directories -> Library Directories

具体添加方法:

1、找到Solution explorer窗口;

2、右键点击工程,在d出框上找到最后一个Properties;

3、点击出来属性框,然后“Configuration Properties” -> "C/C++" -> "General" -> "Additional Include Directories"

将找不到的所有头文件路径添加上

标题、背景和前景颜色、窗口大小等等这些可以用API函数实现

#include <windowsh>//加入头文件就可调用API函数

int main()

{

HWND hWnd=GetForegroundWindow();

HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);

SetWindowText(hWnd,"测试");//标题

SetConsoleTextAttribute(handle,FOREGROUND_GREEN|BACKGROUND_BLUE);//前景、背景颜色

return 0;

}

VC60 能够在 XP 下很好的运行,无需进行额外的设置,但在 Win7、Win8 和 Win10 下,安装完成后还要修改兼容模式才可以。解决方法如下:

一、对于Win7和Win10,需要将VC60的兼容模式修改为 Windows XP SP3:

1、在 VC60 的快捷方式或开始菜单上单击鼠标右键,选择“属性”。

2、在d出的对话框中,将兼容模式修改为Windows XP SP3 或 SP2,如下图所示。

二、相比Win7和Win10,Win8稍微麻烦一些,要先将 MSDEVEXE 重命名为 MSDEV3EXE,再按照上面的步骤设置兼容模式。

1、找到MSDEVEXE所在,MSDEVEXE是 VC60 的主程序,位于 VC60 的安装目录下,可以在属性面板中快速找到 MSDEVEXE。

2、将MSDEVEXE重命名为MSDEV3EXE。

3、在 VC60 的快捷方式或开始菜单上单击鼠标右键,选择“属性”。

4、在d出的对话框中,将兼容模式修改为Windows XP SP3 或 SP2,如下图所示。

完全可以不用。MFC仅仅是对 Windows API 的一次面向C++语言的封装,可用可不用。只不过那样是自找麻烦罢了。我就举个不用MFC编写图形用户界面的例子,就是所谓 Windows SDK 编程。

以下代码不含丝毫MFC,在Visual C++ 60测试通过,能够出现一个正规的Windows窗口。

#include <tcharh>

#include <windowsh>

/ 这个函数由Windows内部函数DispatchMessage()调用 / 

LRESULT CALLBACK WindowProcedure (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

    HDC hdc;

    PAINTSTRUCT ps;

    RECT rect;

    switch (message)    / 处理信息 /

    {

        case WM_DESTROY: 

            PostQuitMessage (0);      / 发送WM_QUIT到消息队列 /

            break;

        case WM_PAINT:

            hdc = BeginPaint (hWnd, &ps);

            GetClientRect (hWnd, &rect);

            DrawText (hdc, TEXT("Hello, Windows NT!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

            EndPaint (hWnd, &ps);

            break;

        default:  / 不处理的消息 / 

            return DefWindowProc (hWnd, message, wParam, lParam);

    }

    return 0;

}

/ 下面是主函数 /

int WINAPI _tWinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nFunsterStil)

{

    HWND hWnd;         / 这是窗口的句柄 /

    MSG messages;      / 应用程序的消息保存在这里 /

    WNDCLASSEX wincl;  / 窗口类的数据结构 /

    TCHAR szClassName[ ] = TEXT("WindowsApp"); / 窗口类的类名 /

    / 窗口结构 /

    winclhInstance = hThisInstance;

    wincllpszClassName = szClassName;

    wincllpfnWndProc = WindowProcedure;/ 这个函数由Windows *** 作系统调用 /

    winclstyle = CS_DBLCLKS; / 获取双击指令 /

    winclcbSize = sizeof (WNDCLASSEX);

    / 使用默认图标和鼠标指针 /

    winclhIcon = LoadIcon (NULL, IDI_APPLICATION);

    winclhIconSm = LoadIcon (NULL, IDI_APPLICATION);

    winclhCursor = LoadCursor (NULL, IDC_ARROW);

    wincllpszMenuName = NULL; / 没有菜单 /

    winclcbClsExtra = 0;/ 窗口类后面没有多余的字节 /

    winclcbWndExtra = 0;/ 结构或者窗口实例 /

    / 使用窗口的默认颜色作为窗口的背景色 /

    winclhbrBackground = (HBRUSH) COLOR_BACKGROUND;

    / 注册窗口类。如果注册失败,那么就退出程序 /

    if (!RegisterClassEx (&wincl))

        return 0;

    / 窗口类已被注册。创建它的程序 /

    hWnd = CreateWindowEx (

            0,

            szClassName,    / 类名 /

            TEXT("Windows App"),    / 窗口标题栏的文字 /

            WS_OVERLAPPEDWINDOW, / 默认窗口 /

            CW_USEDEFAULT, / 窗口左上角的位置 /

            CW_USEDEFAULT, / 窗口右下角的位置 /

            544, / 窗口宽度(以“像素”位单位) /

            375, / 窗口高度(以“像素”位单位) /

            HWND_DESKTOP, / 窗口是桌面的子窗口 /

            NULL,/ 该窗口无菜单 /

            hThisInstance, / 程序实例的句柄 /

            NULL / 没有窗口创建的数据 /

            );

    / 显示窗口 /

    ShowWindow (hWnd, nFunsterStil);

    / 重绘窗口 /

    UpdateWindow(hWnd);

    / 运行消息循环。循环到GetMessage()函数返回0 /

    while (GetMessage (&messages, NULL, 0, 0))

    {

        / 把虚拟信息翻译成字符信息 /

        TranslateMessage(&messages);

        / 发送信息到窗口过程 /

        DispatchMessage(&messages);

    }

    / 返回PostQuitMessage()函数的返回值 /

    return messageswParam;

}

运行结果如下:

1,在windows桌面中Visual Studio打开软件并新建项目。

2、在d出窗口选择模板“visual C++”,在新建项目栏里选择“win32控制台应用程序”,直接点击确定。(如果没有“Win32控制台程序”,需要安装,直接在此页面根据引导安装即可)。

3、显示欢迎使用win32应用程序向导,点击下一步即可。

4、勾选“空项目”,直接点击“完成”。

5、鼠标右击左侧栏内项目“源文件”--“添加”--“新建项”。

6、在d出窗口,把名称改为c结尾的后缀名,具体 *** 作如图所示。然后选择添加。

7、在输入框内输入C语言代码,在导航栏里选择“调试”--"开始执行(不调试)"。

[精华] 提供一些c书下载地址! 需要的朋友来~~

--------------------------------------------------------------------------------

作者:hancang 发表于:2006-03-16 22:35:15

C++编程思想——C++的神奇书籍 1382 MB

·本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命

钱能C++程序设计教程 68 MB

·钱能C++程序设计教程虽然是很老的书,不过总算是国产书中质量不错中的一本,适合C++初学者

The C++ Standard Library 424 MB

·虽然也是老书,但是够经典,:-) Programming with the C++ Standard Library can certainly be difficult, but Nicolai Josuttiss The

C++PrimerPlus 4thEdition 434 MB

·The fourth edition presents the ANSI C++ standard beginning with a discussion of the essential elements of C++ program

C++ Primer 中文版(第三版)完全版 381 MB

·C++ Primer的第三版结合了Stanley Lippman的实践经验和Josée Lajoie对于ANSI/ISO标准C++的深入理解。这本指导书的第三版已经被重新改写过,以便更加精确地讲述标准C++的特性和用法。在本书中,对于C

Exceptional C++ 351 KB

·本书详细地讨论了如何编写健壮高效的代码以及模块设计技术。本书采用了自问自答的语言风格,它讨论了实际程序设计中普遍存在的,又非常不易察觉的问题,并且进行了深刻的分析,提出了具有广泛意义的解决方案。本书值得每个想成为优秀c++程序员的人阅读

Inside the C++ Object Model 2003-12-17 741 KB 378

·Bestselling author Stanley B Lippmans Inside the C++ Model provides valuable insight into some of the internal

Secure Programming Cookbook for C and C++ 134 MB

·Secure Programming Cookbook for C and C++

The C++ Programming Language 3rdEdition 399 MB

·In this brand-new third edition of The C++ Programming Language, author Bjarne Stroustrup, the creator of C++,

C-C++ 最佳编程指南 4128 MB

·C-C++ 最佳编程指南

上述书籍下载地址是

深度探索C++对象模型 786 MB

高质量C++编程指南 326 KB

C与C++中的异常处理 53 KB

C++ Primer 题解 657 MB 0

Effective C++中文版 255 KB

Essential C++中文版(全) 788 MB

C++视频学习(RM) 1200 MB

C++沉思录 PDF版 746 MB

Visual C++ 运行库参考手册 843 MB

Visual C++ 60 数据库编程大全 6 1086 MB

Visual C++经典 1353 MB

Visual C++编程技巧 241 KB 896

Optimizing C++ 370 KB 9976

数据结构 C++ 语言描述 2088 MB

C++ In Action 151 MB

VisualC++技术内幕 7857 MB

C++Primer3rdEdition 中文完美版 45 MB

上述书籍去

里面找吧~~

:em17: :em17: :em17: :em11: :em11: :em11:

找到好电子书也告诉我啊~~

--------------------------------------------------------------------------------

1vc++技术内幕第四版 (潘爱民)

ftp://2103215756/课件/c++primer/vc++技术内幕IV(潘爱民)rar

2C++经典对话系列

中文:

3MFC Windows 程序设计(第二版)

英文版:

中文版:暂无,制作中

4Effective C++中文版:

5More Effective C++中文版-zhc译

6More Effective C++中文版-候捷译

(WQ)zip

7Essential C++中文版(全)-候捷译

中文版(全)rar

8深入浅出MFC 2/e

9代码大全中文版

11C++经典对话系列

中文:

12MFC Windows 程序设计(第二版)

英文版:

中文版:暂无,制作中

13数据结构 C++ 语言描述(中文版)

14Java编程思想中文版

ftp://2021187212/pub/doc-book/Java/Java编程思想zip

15C++标准库英文版

ftp://166111644/incoming/新文件夹/f/The%20C++%20Standard%20Library(with%20TOC)pdf

16Windows核心编程

英文:

17TCP-IP详解卷1:协议

ftp://2022044161/学习资料/TCPIP/TCP-IP详解卷1:协议pdf

18TCP-IP详解卷2:实现

ftp://2022044161/学习资料/TCPIP/TCP-IP详解卷3:TCP事务协议,>

以上就是关于怎么在C语言控制台程序中插入背景图全部的内容,包括:怎么在C语言控制台程序中插入背景图、vc2008 在工程里添加include文件和lib、c语言如何给自己写的程序加上图形界面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10163796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存