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语言如何给自己写的程序加上图形界面等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)