windows 程序设计自学:添加图标资源

 1 #include <windows.h>
 2 #include "resource.h"
 3
 4 LRESULT CALLBACK MyWndProc(  HWND hwnd,      // handle to window
 5   UINT uMsg,      // message identifier
 6   WPARAM wParam,  // first message parameter
 7   LPARAM lParam   // second message parameter
 8   );
 9
10 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
11 {
12     TCHAR szAppName[] = TEXT("IconDemo");
13     WNDCLASS wnd;
14     HWND hwnd;
15     MSG msg;
16     wnd.style = CS_HREDRAW | CS_VREDRAW; //水平或垂直改变窗口都被重绘 与MyWndProc的WM_PAINT消息关联
17     wnd.lpfnWndProc = MyWndProc;
18     wnd.cbClsExtra = 0;
19     wnd.cbWndExtra = 0;
20     wnd.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
21     wnd.hCursor = LoadCursor(NULL, IDC_ARROW);
22     wnd.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
23     wnd.lpszMenuName = NULL;
24     wnd.lpszClassName = szAppName; //窗口类标识,用在CreateWindow的第一个参数
25     wnd.hInstance = hInstance;
26     if(!RegisterClass(&wnd))
27     {
28         MessageBox(NULL, TEXT("无法创建窗口"), TEXT("ERROR"), MB_OK|MB_ICONERROR);
29         return 0;
30     }
31
32     hwnd = CreateWindow(szAppName, TEXT("Hello"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); //第二个参数为窗口标题
33     ShowWindow(hwnd, nShowCmd);
34     UpdateWindow(hwnd);
35     while (GetMessage(&msg, NULL, 0, 0))
36     {
37         TranslateMessage(&msg);
38         DispatchMessage(&msg);
39     }
40     return 0;
41 }
42
43 LRESULT CALLBACK MyWndProc(  HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
44 {
45     HDC hdc; //定义设备环境句柄
46     PAINTSTRUCT ps; //绘制结构
47
48     static HICON hIcon;
49     static int cxIcon, cyIcon, cxClient, cyClient;
50     HINSTANCE hInstance;
51     int x, y;
52
53     switch(uMsg)
54     {
55
56     case WM_CREATE:
57     {
58         hInstance = ((LPCREATESTRUCT) lParam)->hInstance;//WM_CREATE消息的lParam参数是一个CREATESTRUCT结构的指针,包含hInstance.
59         hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
60         cxIcon = GetSystemMetrics(SM_CXICON); //获取图标大小,上一条LoadIcon关联
61         cyIcon = GetSystemMetrics(SM_CYICON);
62         return 0;
63     }
64     break;
65
66     case WM_PAINT:
67     {
68         hdc = BeginPaint(hwnd, &ps);
69         for (y = 0; y < cyClient; y += cyIcon)
70         {
71             for (x = 0; x < cxClient; x += cxIcon)
72             {
73                 DrawIcon(hdc, x, y, hIcon); //绘制
74             }
75
76         }
77         EndPaint(hwnd, &ps);
78
79     }
80     break;
81
82     case WM_SIZE:
83     {
84         cxClient = LOWORD(lParam);
85         cyClient = HIWORD(lParam);
86     }
87     break;
88
89     case WM_DESTROY:
90         PostQuitMessage(0);
91         return 0;
92     }
93
94     return DefWindowProc(hwnd, uMsg, wParam, lParam);
95 }

注:参阅windows 程序设计第五版334页

windows 程序设计自学:添加图标资源

时间: 2024-08-08 18:20:56

windows 程序设计自学:添加图标资源的相关文章

windows 程序设计自学:添加字符串资源

1 #include <windows.h> 2 #include "resource.h" 3 4 LRESULT CALLBACK MyWndProc( HWND hwnd, // handle to window 5 UINT uMsg, // message identifier 6 WPARAM wParam, // first message parameter 7 LPARAM lParam // second message parameter 8 ); 9

windows 程序设计自学:窗口正中显示Hello,World

1 #include <windows.h> 2 3 LRESULT CALLBACK MyWndProc( HWND hwnd, // handle to window 4 UINT uMsg, // message identifier 5 WPARAM wParam, // first message parameter 6 LPARAM lParam // second message parameter 7 ); 8 9 int WINAPI WinMain( HINSTANCE h

VC按钮添加图标的方法

1  按钮添加图标: 方法一: 1.添加图标资源IDI_ICON1; 2 使用函数 LoadIcon() 载入图标.因为LoadIcon() 是类 CWinApp 的成员函数,同时函数 LoadIcon() 返回所载入图标的句柄.所以我们采用以下方法来调用函数 LoadIcon(): HICON m_hicn1=AfxGetApp()->LoadIcon(IDI_ICON1); 3 为按钮设置图标了,这通过调用函数 SetIcon() 来实现: m_button1.SetIcon(m_hicn1

Windows下为go程序加入图标资源

a. 准备图标资源如demo.ico,适用WindowsXP的图标可以选择32x32或48x48. b.建立rc文件,如demo.rc 内容如下   IDI_ICON1 ICON "demo.ico" c.使用windres编译demo.rc.(windres.exe可以在MinGW中找到)  windres -o demo_res.syso demo.rc d.使用go工具编译即可 go build e.如果是多平台开发,非Windows平台不需要rc资源,可以建立以下批处理 bui

《Windows程序设计》复习题

<Windows程序设计>模拟题 一.单项选择题 1. 在VC++中,项目文件的扩展名是(B). A)exe                                             B)dsp C) dsw                                             D)cpp 2. 在MFC中,利用ClassWizard不能(D ). A)建立新类                                    B)进行消息映射 C) 增加类

Windows程序设计笔记4:第10章:TCP/IP和网络通信

WinSock接口:Windows处理网络的API 套接字socket 流套接字:SOCKET_STREAM           可靠连接   TCP HTTP POP3 数据报套接字:SOCKET_DGRAM     不可靠连接 UDP 寻址方式: 1:sockaddr的第1个版本 struct sockaddr{ u_short  sa_family;       //地址家族 char      sa_data[14];   //数据 } 2.sockaddr的TCP/IP版本的 sock

Windows 托盘区域显示图标

NOTIFYICONDATA structure 这个结构体包含了向通知区域(底部任务栏右下角区域,下面都称为托盘)显示的信息.需要使用函数Shell_NotifyIcon. 结构体成员 1 typedef struct _NOTIFYICONDATA { 2 DWORD cbSize; 3 HWND hWnd; 4 UINT uID; 5 UINT uFlags; 6 UINT uCallbackMessage; 7 HICON hIcon; 8 TCHAR szTip[64]; 9 DWOR

《windows程序设计》第一章,建议想学API的每天看一章

开始 壹佰软件开发小组  整理编译   本书介绍了在Microsoft Windows 98.Microsoft Windows NT 4.0和Windows NT 5.0下程序写作的方法.这些程序用C语言编写并使用原始的Windows Application Programming Interface(API).如在本章稍后所讨论的,这不是写作Windows程序的唯一方法.然而,无论最终您使用什么方式写作程序,了解Windows API都是非常重要的. 正如您可能知道的,Windows 98已

Windows 程序设计 复习笔记(共 77 问)

Windows 程序设计 复习笔记(共 77 问) (个人整理,仅做复习用 :D,转载注明出处:http://blog.csdn.net/hcbbt/article/details/42706501) 知识点 双字节字符集和Unicode字符集有何区别?采用双字节字符集有何问题 双字节字符集(DBCS)编码是0-255,DBCS含有1字节代码与2字节代码,而Unicode是统一的16位系统,这样就允许表示 65536个字符.Unicode中的每个字符都是16位宽而不是8位宽.在Unicode中,