The SDL forums have moved to discourse.libsdl.org.
This is just a read-only archive of the previous forums, to keep old links working.


SDL Forum Index
SDL
Simple Directmedia Layer Forums
SDL2 & Winapi question/problem
lukaszk159


Joined: 28 Jul 2014
Posts: 2
Hi,

I'm brand new here, but I'm glad to be part of this community Smile

I have problem with bringing together WinApi GUI and SDL2.

What I have:

I'm making by SDL2 a normal window, then (except other things I do) I retriving that sdl window hwnd and use it tomake winapi menu and other stuff. Everything works fine. I even making the new window only in winapi and it is also working.

Problem/Question:

When I try to handle menu, by using WM_COMMAND, then nothing happends. How I should do that?


I tryed to get the native events, by enabling the SDL_SYSWMEVENT and retriving wParam, lParam and the rest of that stuff. Only sysevent is working.

Ofcourse I also defined the winapi new events like that:
#define ID_MENU_NEW FILE 9001

Can someone point me in the right direction how to handle WM_COMMAND from this menu?

PS: If there will be need I can post the code. I can't do that now, unfortunatly.

Thanks for any kind of help!
lukaszk159


Joined: 28 Jul 2014
Posts: 2
Here it is hopw I tryed to handle mernu bar commands.

Code:

void WinGUI::MenuUpd(SDL_Event &e)
{
   
   

if(e.type==SDL_SYSWMEVENT)
   {
            
   Logger::Instance()->write2console("SDL_SYSWMEVENT");
                  UINT Message = e.syswm.msg->msg.win.msg;
                  WPARAM wParam = e.syswm.msg->msg.win.wParam;
                  LPARAM lParam = e.syswm.msg->msg.win.lParam;
                  HWND hwnd = e.syswm.msg->msg.win.hwnd;

               
                  if (e.syswm.msg->msg.win.msg == WM_DEVICECHANGE)
                  {
                     //This event is actualy working
                     
                     Logger::Instance()->write2console("Pen");
                  }


                  if (e.syswm.msg->msg.win.msg == WM_COMMAND)
                  {
                     // ...and that is not working
                     Logger::Instance()->write2console("WM_COMMAND Event");

                     switch(LOWORD(wParam))
                     {
                        case ID_FILE_EXIT:
                           Logger::Instance()->write2console("ID_FILE_EXIT");
                           PostMessage(mainhwnd, WM_CLOSE, 0, 0);
                           break;
                        case ID_INFO_ABOUT:
                           Logger::Instance()->write2console("ID_INFO_ABOUT");
                           MessageBox( NULL, "To jeszcze nie działa!", "Info", MB_ICONINFORMATION );

                           break;
                     }
                  }
/*