1.資源概括
- 資源最終將會被打包成.res文件。
- 自定義資源:
- 創建.rc文件和.h文件
myresource.h
myres.rc
- .h文件中定義資源的const id
eg. myresource.h中內容:
#define IDX_XXX 1000
- .rc文件中,引入.h,並且定義資源的類型和位置
eg.myres.rc文件中的內容
IDX_XXX 資源類型 資源名稱/資源全路徑
- 或者.rc文件中,使用名稱定義資源
eg.myres.rc文件中的內容
RES_NAME 資源類型 資源名稱/資源全路徑
- 加載資源
- 用字符串名字定義的
- 用ID定義的,使用MAKEINTRESOURCE(ID)
2.資源類型和資源加載
1 .ico圖標資源(ICON)
1.定義圖標資源
icon_name/ICON_ID ICON icoName.ico
2.加載圖標資源
#include "myresource.h"
LoadICON(hInstance,icon_name); // 資源定義的名稱是字符串
LoadICON(hInstance,MAKEINTRESOURCE(ICON_ID)); // 資源用ID定義的
2 .cur光標資源(CURSOR)
1.定義光標資源資源
cur_name/CUR_ID CURSOR curName.ico
2.加載圖標資源
#include "myresource.h"
LoadCursor(hInstance,cur_name); // 資源定義的名稱是字符串
LoadCursor(hInstance,MAKEINTRESOURCE(CUR_ID)); // 資源用ID定義的
3 字符串資源
1.定義字符串資源:在.rc文件中,格式爲:
STRINGTABLE
{
ID_STRING_1, "string 1"
ID_STRING_2, "string 2"
}
每條字符串資源長度不能超過255個字符。
2.加載字符串資源
#include "myresource.h"
int bufferCount=80;
char load_str[bufferCount]
LoadString(hInstance,
ID_STRING_1, // 字符串的id
load_str, // 加載字符串的指針
bufferCount // buffer的長度
)
4 .WAV聲音資源(WAVE)
1.定義聲音資源
wave_name/WAVE_ID WAVE file_name.wav
2.加載/播放聲音資源
#include "myresource.h"
PlaySound("wave_name",hInstance,
SND_XXX | SND_YYY);
PlaySound(MAKEINTRESOURCE(WAVE_ID),hInstance,
SND_XXX | SND_YYY);
// 停止所有聲音
PlaySound(NULL,hInstance,
SND_PURGE);
3.菜單資源(MENU)
1.創建菜單資源
在.rc文件中,創建一個常見的菜單,包含File和Help
MainMenu MENU DISCRADABLE
{
POPUP "&File"
{
MENUITEM "Open", MENU_FILE_ID_OPEN
// ......
MENUITEM "E&xit", MENU_FILE_ID_EXIT
}
POPUP "Help"
{
MENUITEM "About", MENU_FILE_ID_EXIT
}
}
- POPUP:彈出菜單
- MENUITEM: 菜單項
- 使用&符號,定義&後的字母爲Alt快捷鍵
在myres.h中定義使用到的id:
#define MENU_FILE_ID_OPEN 20000
#define MENU_FILE_ID_XXXX 20000
// ......
2.加載菜單資源
- 方法1:Windows類winClass定義中:
winClass.lpszMenuName = “MainMenu”
winClass.lpszMenuName = MAKEINTRESOURCE(MAIN_MENU_ID) - 方法2:先加載菜單資源,再賦值
HMENU hMenu = LoadMenu(hInstance, "MainMenu");
或者:
HMENU hMenu = LoadMenu(hInstance, MAKEINTRESOURCE(MAIN_MENU_ID));
賦值:
給hWnd賦值hMenu菜單
SetMenu(hWnd,hMenu);
3.響應菜單事件(page 82)
- 1.WM_COMMAND消息
- 響應系統按鍵
- 消息結構:msg、lparam、wparam
對於響應菜單點擊事件:
- msg:WM_COMMAND
- lparam:發出消息的窗口句柄
- wparam:選中的菜單項的ID(LOWORD(wparam))
- 2.實例代碼
在WinProc處理程序中:
case WM_COMMAND:
{
switch(LOWORD(wparam)
{
case MENU_FILE_ID_OPEN:
{
// clicked open
}
break;
case MENU_FILE_ID_EXIT:
{
// clicked exit
}
break;
// ......
}
}
break;
轉載請註明作者及出處,本文作者爲延澈左
本文鏈接爲https://yanchezuo.com/en-9.html