#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#pragma comment(lib,"shell32")
#include <windows.h>
#include <Shlwapi.h>
#include <shlobj.h>
#include <stdio.h>
struct CONSOLE_FONT{ DWORD index; COORD dim;};
typedef BOOL (WINAPI *PROCSETCONSOLEFONT )(HANDLE, DWORD);
typedef BOOL (WINAPI *PROCGETCONSOLEFONTINFO )(HANDLE,BOOL,DWORD,CONSOLE_FONT*);
typedef COORD (WINAPI *PROCGETCONSOLEFONTSIZE )(HANDLE,DWORD);
typedef DWORD (WINAPI *PROCGETNUMBEROFCONSOLEFONTS)();
typedef BOOL (WINAPI *PROCGETCURRENTCONSOLEFONT )(HANDLE,BOOL,CONSOLE_FONT*);
PROCSETCONSOLEFONT SetConsoleFont;
PROCGETCONSOLEFONTINFO GetConsoleFontInfo;
PROCGETCONSOLEFONTSIZE GetConsoleFontSize;
PROCGETNUMBEROFCONSOLEFONTS GetNumberOfConsoleFonts;
PROCGETCURRENTCONSOLEFONT GetCurrentConsoleFont;
extern "C" HWND WINAPI GetConsoleWindow();
int main(int argc, char *argv[]) {
//然后在程序启动的时候进行载入:
HMODULE hKernel32 = GetModuleHandle("kernel32");
SetConsoleFont = (PROCSETCONSOLEFONT )GetProcAddress(hKernel32,"SetConsoleFont" );
GetConsoleFontInfo = (PROCGETCONSOLEFONTINFO )GetProcAddress(hKernel32,"GetConsoleFontInfo" );
GetConsoleFontSize = (PROCGETCONSOLEFONTSIZE )GetProcAddress(hKernel32,"GetConsoleFontSize" );
GetNumberOfConsoleFonts = (PROCGETNUMBEROFCONSOLEFONTS)GetProcAddress(hKernel32,"GetNumberOfConsoleFonts");
GetCurrentConsoleFont = (PROCGETCURRENTCONSOLEFONT )GetProcAddress(hKernel32,"GetCurrentConsoleFont" );
//载入完毕之后,就可以进行编程对字体大小控制了。
int NumOfFont,i,X=0,Y=0,IconIndex=0;
char *IconFile=NULL;
NumOfFont = GetNumberOfConsoleFonts();
CONSOLE_FONT *fonts = new CONSOLE_FONT[NumOfFont];
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleFontInfo(hConsole, 0, NumOfFont, fonts);
if (argc==1) {
printf("Set Console FontSize and Icon. Designed by zhao4zhong1@163.com 2015-07-10\n");
printf("Usage: %s [XxY] [IconFile] [IconIndex]\n",argv[0]);
printf("May availible Font Size:\n X x Y\n-- x --\n");
}
if (argc==2) {
if (2!=sscanf(argv[1],"%dx%d",&X,&Y))
IconFile=argv[1];
} else if (argc==3) {
if (2!=sscanf(argv[1],"%dx%d",&X,&Y)) {
IconFile=argv[1];
sscanf(argv[2],"%d",&IconIndex);
} else {
IconFile=argv[2];
}
} else if (argc==4) {
sscanf(argv[1],"%dx%d",&X,&Y);
IconFile=argv[2];
sscanf(argv[3],"%d",&IconIndex);
}
if (IconFile) {
HWND hwnd=GetConsoleWindow();
if (hwnd) {
HICON hIconS=NULL;
if (1<=ExtractIconEx(IconFile,IconIndex,NULL,&hIconS,1)) {
if (hIconS) {
SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)hIconS);
// DestroyIcon(hIconS);
}
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, NULL, NULL);//更新任务栏上的图标
}
}
}
for (i=0;i<NumOfFont;i++) {
fonts[i].dim = GetConsoleFontSize(hConsole, fonts[i].index);
// if (argc==1) printf("%2d x %2d %d %d\n",fonts[i].dim.X,fonts[i].dim.Y,i,fonts[i].index);
if (argc==1) printf("%2d x %2d\n",fonts[i].dim.X,fonts[i].dim.Y);
if (fonts[i].dim.X == X && fonts[i].dim.Y == Y) {
SetConsoleFont(hConsole, fonts[i].index);
break;
}
}
delete[] fonts;
return 0;
}
解决方案
8
顶起来,分分分分分
8
First !!

8
8000大关……

8
必须赞,必须赞~8
前排留名学习
16
学习学习



8
顶顶顶 。
8
就不关注你 

8
喜大普奔。顶赵老湿
16
是不是送钱的
8
接分接分接分
8
恭喜恭喜,接分了。
8
赵老师v587

8
echo 顶
8
一直都用资源文件设图标
8

8
虽然本人多不关注别人, 也不看被关注, 不过8000…

8
恭喜赵四老师!
16
恭喜赵四老师
7
顶赵老师,

7
爷的小号建了7999个就为了关注你,给分吧。
7
赵老师,给你增加点人气。赞一个 赞一个 赞一个
7
又来接分咯

7
恭喜题主,接分!
7
恭喜题主,躺下接分
7
离10000不远了

7
那些都是本人小号,你不信,看本人换一个号,发同样的内容

7
恭喜恭喜

7
多谢赵老师的帮忙!
7

7
这!你老板要是看到了会怎么想?

7

7
赵4老死 膜拜
7
说好的分呢

7
用你的分砸死本人吧,网脸上砸,别客气!
6
同楼上。
6
菜鸟来接分了

6
接分接分6
没有看到分呀
6
支持分享。


6
希望还没来晚