Функция не обрабатывает ни одно нажатие на элемент меню
У меня есть одно приложение которое состоит из одной библиотеки Dll и приложения .exe так вот все события окна и его создание находятся в Dll. Вот код Dll откуда вызывается функция обработки событий меню:
LRESULT CALLBACK PullEvents(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message)
{
case WM_CREATE: {
break;
}
case WM_CLOSE: {
if (MessageBox(hWnd, L"Really quit?", L"Close quest", MB_OKCANCEL) == IDOK)
DestroyWindow(hWnd);
return 0;
}
case WM_COMMAND: { // this is the handling of menu events
if (*MenuCallBack)
MenuCallBack(lParam);
break;
}
case WM_DESTROY: {
PostQuitMessage(0);
break;
}
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
а вот код Start.cpp:
#include "framework.h"
#include "resource.h"
#include "Defines.h"
#include "Typedefs.h"
#include "Dll.h"
void MenuCallBack(LPARAM menuItem);
int APIENTRY wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPWSTR lpCmdLine, _In_ int nCmdShow)
{
Dll* WS = new Dll();
if (WS->LoadDll(L"WS.dll")) {
Init init = (Init)WS->GetDllFunction("Init");
MakeWindow Make = (MakeWindow)WS->GetDllFunction("Make");
MakeWindow isClose = (MakeWindow)WS->GetDllFunction("isClose");
Term Terminate = (Term)WS->GetDllFunction("Terminate");
SetWndMenu Menuset = (SetWndMenu)WS->GetDllFunction("setWindowMenu");
SetMCB SetMenuCallBack = (SetMCB)WS->GetDllFunction("SetMenuCallBack");
if (!*Terminate || !*Menuset) {
WS->~Dll();
return -1;
}
if (!*SetMenuCallBack)
return -99;
SetMenuCallBack(MenuCallBack);
Menuset(MAKEINTRESOURCE(IDI_MENU));
if (*init)
init(100, 200, L"functions");
if (*Make)
Make();
if (*isClose) {
while (!isClose())
{
}
}
Terminate();
WS->~Dll();
}
return 0;
}
void MenuCallBack(LPARAM menuItem)
{
switch (menuItem)
{
case FILE_SAVE_AS:
MessageBox(NULL, L"jkdf", L"jnsf", MB_OK);
break;
}
}
Так если в MenuCallBack убрать switch то видно что это срабатывает, но сравнение в switch не происходит должным образом. Буду благодарен за любую помощь.