为控制台程序加个图标
一直想为控制台加上一个漂亮的图标,但在GOOGLE上找了很久也没有找到相关的介绍,
没想到在整理硬盘时居然发现我的硬盘上有太多这样的例子了,
<<Undocumented Windows 2000 Secrets>> 这本书的附书光盘上的所有控制台程序都有图标,于是找一个看了下,
大概步骤应该是这样的:
在C源文件中自定义入口,如下:
事实上这个Main并不是真正的入口,后面会说!
然后是最关键的两个头文件:
ProgInfo.h 这里面定义了很多宏,不过大多我都没看,只是瞟一眼而已
W32Start.h 这个头文件是重中之重,它实了对自定义入口,在文件最后用如下语句定义了入口:
并在W32Start函数中调用了上面的那个Main函数:
{
dCodePage = GetConsoleOutputCP ();
SetConsoleOutputCP (GetACP ());
GetConsoleScreenBufferInfo (ghStdOutput, & csbi);
gdLine = csbi.dwSize.X;
dStatus = Main (pwc -> argc, pwc -> argv, pwc -> argp);
SetConsoleOutputCP (dCodePage);
}
如此一来Main就被调用成功了,
最后就是那个RC文件它不是通过IDE环境导入的,而是手写的光盘上的所有RC文件格式完全一样,如下:
// 08-27-2000 Sven B. Schreiber
// sbs@orgon.com
#define _RC_PASS_
#include " w2k_sym.h "
// =================================================================
// STANDARD RESOURCES
// =================================================================
MAIN_RC_VERSION
MAIN_RC_ICON
// =================================================================
// END OF FILE
// =================================================================
其中的MAIN_RC_VERSION 和 MAIN_RC_ICON都是宏,它们定义在ProgInfo.h中:
VS_VERSION_INFO VERSIONINFO /
/
FILEVERSION MAIN_VERSION_HIGH, MAIN_VERSION_LOW, 0 , MAIN_BUILD /
PRODUCTVERSION MAIN_VERSION_HIGH, MAIN_VERSION_LOW, 0 , MAIN_BUILD /
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK /
FILEFLAGS 0 /
FILEOS VOS_UNKNOWN /
FILETYPE MAIN_VFT /
FILESUBTYPE VFT2_UNKNOWN /
{ /
BLOCK " StringFileInfo " /
{ /
BLOCK SA(MAIN_TRANSLATION) /
{ /
VALUE " OriginalFilename " , SA(MAIN_FILENAME 0 ) /
VALUE " InternalName " , SA(MAIN_MODULE 0 ) /
VALUE " ProductName " , SA(MAIN_NAME 0 ) /
VALUE " FileDescription " , SA(MAIN_CAPTION 0 ) /
VALUE " CompanyName " , SA(MAIN_COMPANY 0 ) /
VALUE " ProductVersion " , SA(MAIN_VERSION_QUAD 0 ) /
VALUE " FileVersion " , SA(MAIN_VERSION_QUAD 0 ) /
VALUE " LegalCopyright " , SA(MAIN_COPYRIGHT_EX 0 ) /
VALUE " Comments " , SA(MAIN_COMMENT 0 ) /
} /
} /
BLOCK " VarFileInfo " /
{ /
VALUE " Translation " , 0xMAIN_LANGUAGE, 0xMAIN_CODEPAGE /
} /
}
// =================================================================
// RESOURCES
// =================================================================
#define MAIN_RC_MENU MAIN_MENU MENU
#define MAIN_RC_ICON MAIN_ICON ICON MAIN_MODULE.ico
#define MAIN_RC_CURSOR MAIN_CURSOR CURSOR MAIN_MODULE.cur
#define MAIN_RC_BITMAP MAIN_BITMAP BITMAP MAIN_MODULE.bmp
MAIN_RC_ICON 会被解释为MAIN_MODULE.ico ,而这里的MAIN_MODULE和上面的SA(.......)宏中的参数一样
又都是宏,
它们定义在自己工程的头文件中,如他的W2K_SYM.H:
#define MAIN_NAME SBS Windows 2000 Symbol Browser
#define MAIN_COMPANY Sven B. Schreiber
#define MAIN_AUTHOR Sven B. Schreiber
#define MAIN_EMAIL sbs@orgon.com
#define MAIN_PREFIX SBS
#define MAIN_EXE
这里的MAIN_MODULE即是当前工程的工程名又是图标文件的文件名,所以我在自己的工程中可以这样定义:
#define MAIN_NAME Window Console Test
#define MAIN_COMPANY thinkSJ Group
#define MAIN_AUTHOR thinkSJ
#define MAIN_EMAIL thinkersj@163.com
#define MAIN_PREFIX thinkSJ
#define MAIN_EXE
这样一来所有东西都被串到了一起,牛人不惭是牛人,构思真是太巧妙了,赞一个!!
为控制台程序加个图标相关推荐
- 关于如何用od反汇编win32 控制台程序
*********************************************************** 如何用od反汇编win32 控制台程序(类似dos程序)呢? ********* ...
- dll文件是什么语言写的程序_易语言图文教学:写好了程序,如何配置程序名称、图标?内详...
引导语 通过前两篇图文,相信大家能制作出一个简单的易语言程序啦.今天是教大家怎样配置程序.说的再清楚些,就是给你的程序加个图标,改个进程名字,加上版本号,添加作者信息等等. 具体操作方法 打开一个已经 ...
- 控制台程序如何加图标
刚因为需要生成一个控制台程序供网站调用,由于生成的exe默认是没有图标的. 不直观,而且不好看. 通过谷歌找到了方法. 测试环境是vs2013 在工程中,及main.cpp所在目录下 创建一个&quo ...
- C语言控制台程序添加图标(基于GCC编译器)
文章目录 1. 生成ICON资源文件 2. gcc编译选项时加上资源文件 3. 一键自动编译 没加图标的控制台程序: 加了图标的控制台程序: 首先,需要准备一个ICON图标文件,像素大小推荐128x1 ...
- 微信小程序图标不支持html,微信小程序实现自定义加载图标功能
效果图 实现思路 1.首先通过HTML+CSS实现加载动画的静态效果: 2.根据需求给每个动画设计不同的动画效果. 例如第一个加载图标的静态绘制 1.首先确定动画的盒子宽高: 2.设置盒子中每一个长方 ...
- c语言怎么改变程序的图标,VC6.0 控制台程序添加图标的两种方法
如何给C控制台程序添加图标说来很惭愧的问题,C语言也算学了很长一阵子,目前还是停留在控制台的水平,今天用着用着突然想给程序换个图标,却找不到在哪设置,又没窗体,在哪弄呢?百度N久,找到如下两种解决方案 ...
- 控制台程序设置程序标题、图标
控制台程序设置程序标题.图标 // An highlighted block #include <iostream> #include <windows.h> #include ...
- c 语言 控制台程序 行字体颜色,C# 控制台程序设置字体颜色
这几天做了个程序,程序本身很简单.大体功能是输入查询条件,从数据库里取出结果计算并显示.但是用户的要求是使用控制台(console)来实现功能.由于功能简单,程序很快就做完了,在面向用户演示程序时,突 ...
- 应用程序没有个图标怎么行? Qt图标美化及打包发布
大家好,我是程序员小哈. 我们编写了好几个Qt的程序了,每个程序都没有图标,看起来丑丑的. 而且我们编写好的程序,直接将exe拷给别人,在别人的电脑中,根本无法直接运行,辛辛苦苦编写的程序,别人用不了 ...
最新文章
- 2017-1-11 css3布局
- 《Linux内核设计与实现》读书笔记(十八)- 内核调试
- 选择安防交换机时需要避免哪些误区呢?
- python爬虫 库_七款必备的Python爬虫库,你知道几个?
- 配置文件管理服务器,06-配置文件管理
- vue的双向绑定原理:Object.defineProperty()
- 今天微信没有520红包 大家可以放心了!
- ubuntu 默认防火墙安装、启用、查看状态
- [LibTorch] Tensor 与 Mat 相互转换
- C++传入任意的函数类型作为参数
- 天津全国计算机等级考试报名时间2020,天津2020年计算机等级考试报名时间汇总...
- iOS 面试题分析(一)
- 神经网络入门之CNN(二)
- 四纵四横客运专线(高铁)
- JavaScript 基础知识总结归纳(一)
- Pixhawk---基于NSH的Firmware开发与调试
- babaliuliu游戏视频--选择1号角色初体验
- TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学
- 步进电机基础(2.1)- 定子相数的分类、结构、原理
- 实验吧Web-难-猫抓老鼠
热门文章
- PropertyGrid使用方法
- Android7.0调用系统相机拍照、访问相册问题。
- 最新ie图标变灰css,网站变灰的CSS代码(兼容火狐、Chrome、IE系浏览器)——w3cdream|前端学习-开发...
- html中加入音乐播放器,4个小时实现一个HTML5音乐播放器
- 高并发Redis微博点赞实战
- 刻盘小知识----刻盘你知道多少?
- Android(或者Java)通过HttpUrlConnection向SpringMVC请求数据(数据绑定)
- Go by Example 中文版: Base64 编码
- python输入名字-Python基础篇--输入与输出
- RCMTM _百度百科