Объединить с именем символической константы

Я пытаюсь сделать макрос, который расширяет символическую константу до case утверждение как это:

// #define WM_PAINT 0x000F
LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
switch (msg) {
BIND_MSG(WM_PAINT)
// -> case WM_PAINT: Wnd_Main_WM_PAINT (hWnd, wParam, lParam); break;
}

return DefWindowProc(hWnd, msg, wParam, lParam);
}

Я перепробовал много вещей. Лучший рабочий макрос, который я получил, был:

#define BIND_MSG(msg) case (msg): Wnd_Main_##msg (hWnd, wParam, lParam); break;

Но этот макрос не расширяется до Wnd_Main_WM_PAINT, но Wnd_Main_0x000F, Когда я пытаюсь Wnd_Main_ ## #msg вместо Wnd_Main_##msgЯ не понимаю Wnd_Main_WM_PAINT, но Wnd_Main_, Есть ли возможность объединить Wnd_Main_ с именем символической константы WM_PAINT?

Visual Studio расширяет макрос до кода & lt; code & gt; Wnd_Main_0x000F & lt; / code & gt;

(Извините, снимок экрана немецкий. Visual Studio говорит, что идентификатор Wnd_Main_0x000F не определено.)

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]