您的變量聲明是錯誤的。變量通常的語法聲明:
std::vector<int> IDM_POPUP_LAST (5);
除此之外,for
不能簡單地將一個函數的外放。
這就是說,這可能是你用作全局變量的東西。解決這個問題的一種方法是使其成爲類的靜態成員,並具有初始化它的函數。您甚至可以添加其他類型的ID在這裏,當你決定你想要他們,並根據需要添加它們初始化到功能:
//resource.h
struct ResourceIDs {
static std::vector<int> menus;
static void init();
//Let's add in three cursors
static std::vector<int> cursors;
};
//NOTE - these are all better off in a .cpp
#include "resources.h" //if in the cpp
std::vector<int> ResourceIDs::menus (5); //define the menus member
std::vector<int> ResourceIDs::cursors (3); //define the cursors member
void ResourceIDs::init() {
for (int i = 0; i < menus.size(); ++i) //note the type mismatch since vector
menus[i] = i + 90; //uses size_t, which is unsigned
//let's do cursors starting at 150
for (int i = 0; i < cursors.size(); ++i)
cursors[i] = i + 150;
}
現在你只需要確保初始化它們,然後你可以使用他們無論你需要:
#include <windows.h>
#include "resource.h"
int main() {
ResourceIDs::init();
//create window, message loop, yada yada
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
case WM_COMMAND:
//check the menu ids using ResourceIDs::menus[x]
default:
return DefWindowProc (hwnd, msg, wParam, lParam);
}
}
這裏從定義-ING的ID應該是什麼代碼#像唯一的區別是在main
開始到ResourceIDs::init()
一個電話,需要ResourceIDs::
和數組語法。
哦,那就是你的意思。您需要將這些底部3移動到您使用它們的任何函數中。 – chris 2012-07-25 00:55:54
我試圖將RID傳遞給函數,以便可以在那裏處理。那麼我怎樣才能將其他RID移動到正在使用的函數中。我應該在頭文件中定義IDM_POPUP_LAST的RID? – crr 2012-07-25 01:01:27
當您使用'define'時,'IDM_POPUP_LAST'只是一種類型,您不能將其用作變量。 – aasa 2012-07-25 01:08:25