1 Reply Latest reply on Jun 9, 2017 1:58 AM by LeoTaro

    Add a bitmap to a button

    Pierrot Dev

      I have compiled the sample code "EmptyPanel" of the sdk, then made my own version with a control bar and some buttons.

      I would like to add bitmaps to the buttons, adding the BS_BITMAP style to the native windows buttons then sending

       

      hInst = (HINSTANCE)GetWindowLongPtr((HWND)ctrlBarPlatformWindow, GWLP_HINSTANCE);

      hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));

      hBmp hInst are global to the plugin class. hBmp returns 0;

      then

      SendMessage((HWND)hwndButtonPrevious, (UINT)BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hBmp);

       

      The function is called in the CtrlBarWindowProc between two Push/Pop AppContext otherwise not working.

      Buttons are responding normally to command and make the job.

      But I never had any image on it!

      I tried many variations, but nothing happen.

       

      I guess something wrong with hInst, hBmp, or the place where I Send the BM_SETIMAGE message

       

      Any idea?

       

      Pierre

        • 1. Re: Add a bitmap to a button
          LeoTaro Level 4

          The LoadBitmap call is failing (hBmp is NULL), because you are using the application HINSTANCE rather than the one for your plugin (dll). Add a DllMain function to your plugin and store the HINSTANCE.

           

          HINSTANCE hDll = NULL;

           

          BOOL APIENTRY DllMain( HINSTANCE hinstDLL, DWORD ul_reason, LPVOID reserved)

            if (DLL_PROCESS_ATTACH == ul_reason)

                 hDll = hinstDLL;

            return TRUE;

          }