第一种 为你的console工程加入一个资源文件并加入一个ico)
其实这样就可以了,因为第一个加入的icon(资源ID值为101)程序就会默认生成EXE的图标了
第二种 程序指定(也要为工程加入一个资源文件和一个ico)
#include "stdafx.h"
int main(int argc, char* argv[])
{
HWND hwnd=GetConsoleWindow();
SendMessage(hwnd,WM_SETICON,ICON_SMALL,( LPARAM )LoadIcon(GetModuleHandle(NULL),MAKEINTRESOURCE(101)));
scanf("a");
return 0;
}
其中101 就是你的ICON资源ID,可以换成其他的
在stdafx.h中
#define _WIN32_WINNT 0x0500
#define WINVER 0x0500
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <stdio.h>
#include <windows.h>
main函数也可以用如下替代
#include "stdafx.h"
int main(int argc, char* argv[])
{
HICON hIcon=AfxGetApp()->LoadIcon(IDI_Main);
HWND hwnd=GetConsoleWindow();
SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
scanf("a");
return 0;
}
其中IDI_Main就是ICON资源ID号
不过这样编译会出错,说GetConsoleWindow未定义
解决方法是在在使用该函数前声明:
extern "C" WINBASEAPI HWND WINAPI GetConsoleWindow ();
#include "stdafx.h"
extern "C" WINBASEAPI HWND WINAPI GetConsoleWindow ();
int main(int argc, char* argv[])
{
HICON hIcon=AfxGetApp()->LoadIcon(IDI_Main);
HWND hwnd=GetConsoleWindow();
SendMessage(hwnd,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
scanf("a");
return 0;
}