1. 程式人生 > >win32 應用程式更換icon圖示

win32 應用程式更換icon圖示

按照文章《win32 application 新增一個icon 資源 resource》,

編譯之後,執行

HelloRes.exe

介面如下:
這裡寫圖片描述

工作列上面的圖示,如下:

這裡寫圖片描述

修改後的hello.cpp中的程式碼:


#include <windows.h>
#include <stdlib.h>                                                 
#include <string.h>                                                 
#include <tchar.h>                                                  
#include "resource.h" // 1 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; 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); // 2 wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); // 3
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); 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; TCHAR msg[] = _T("Hello, World!"); switch (message) { case WM_CLOSE: DestroyWindow(hwnd); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); TextOut(hdc, 50, 5, msg, _tcslen(msg)); EndPaint(hwnd, &ps); break; default: return DefWindowProc(hwnd, message, wParam, lParam); } return 0; }

共修改了3個地方 ,看程式碼中的 //1 , //2 ,//3所在的語句。

編譯,執行之後的效果,如下:
這裡寫圖片描述

這裡寫圖片描述

主要修改的內容:

    //wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);                      // 2
    wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));        // 3