Hi Joeman,

thank you very much for your help. I've got the solution.

First of all, it was wrong to use the file pointer in a shared DLL. When I replaced it with PostMessage, my main application received a notification when the Callback was called.

The solution to manipulate the WM_GETMINMAXINFO is to subclass the window in the callback function like this:
Code:
if ( (cw->message == WM_GETMINMAXINFO))
           {
              LONG_PTR proc = SetWindowLongPtr(cw->hwnd, GWL_WNDPROC,
                                         (LONG_PTR)WndProc);
              SetProp(cw->hwnd,
                "_old_proc_",
                (HANDLE) (proc));
Then a new function is called where I can manipulate the message:
Code:
LRESULT
CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 HANDLE hdl = GetProp(hwnd, "_old_proc_");
 RemoveProp(hwnd, "_old_proc_");
 SetWindowLongPtr(hwnd, GWL_WNDPROC, (LONG_PTR) (hdl));
 
 switch (uMsg)
    {
        case WM_GETMINMAXINFO:
        {
            MINMAXINFO* minmax = (MINMAXINFO*) (lParam);
            minmax->ptMinTrackSize.x = 2500;
        }
        break;
        case WM_WINDOWPOSCHANGING:
        {
            WINDOWPOS* wpos    = (WINDOWPOS*) (lParam);
            wpos->cx = 2500;
        }
        break;
        case WM_WINDOWPOSCHANGED:
        break;

        default:
            return CallWindowProc(
                (WNDPROC) (hdl),
                hwnd,
                uMsg,
                wParam,
                lParam);
            break;

    }        
}
Thank you very much for you effort