大家好,今天我给大家讲窗体图标的更改,用pelles c 新建工程
先选“a "hello,world" program,然后打开main.c
wc.hIcon = LoadIcon(ghInstance, MAKEINTRESOURCE(IDR_ICO_MAIN));
ghInstance是全局变量
31行 static HANDLE ghInstance;
53行 ghInstance = hInstance;
hInstance是实例句柄,说明LoadIcon();第一个是程序的实例句柄,第二个参数是MAKEINTRESOURCE(IDR_ICO_MAIN),资源里图标文件IDR_ICO_MAIN,
那我就知道了,只要把IDR_ICO_MAIN所连接的文件换一下,IDR_ICO_MAIN删除,点右键,选择import,选择*.ico,编译
Building main.obj.
Building main.res.
Building shu.exe.
Done.
成功.
我们都看过<《windows 编程》hello win 98 Windows程序设计,图标还是默认的#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
/*WNDCLASwndclass ;少了S*/ WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
/*wndclass.lpszMenuNam = NULL ;少了e*/ wndclass.lpszMenuName= NULL;
wndclass.lpszClassName= szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow( szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT,// initial x position
CW_USEDEFAULT,// initial y position
CW_USEDEFAULT,// initial x size
CW_USEDEFAULT,// initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
case WM_CREATE:
PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
Windows程序设计的原代码错了 ,
好了,我新建空工程,复制代码,保存,点击运行,忘连接库了winmm.lib,还是默认图标,我们在资源上传个图标,没有资源文件,建一个资源文件,点保存,加入工程,点ok
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;该为wwndclass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(8001)) ;
hInstance实例句柄
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
MAKEINTRESOURCE(id), 图标id 8001
成功。
IDR_ICO_MAIN 我也想把 id 变成IDR_ICO_MAIN,可以吗 ?
可以
点view,第一项
点调试的时候,让我保存头文件
#define IDR_ICO 8001
为什么出现这error #2048: Undeclared identifier 'IDR_ICO',看看资源文件
没问题啊,头文件有了,声明了,?????、
include<main.h>了吗?
error #1035: Can't find include file <main.h>有错了 ,
工程中头文件用""
ok
HelloWin.wav放在工程目录下,运行就有声音了,
再见,qingyn 2009 10 7