1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Silent message box

Discussion in 'Plugins' started by vefatica, Jun 27, 2011.

  1. vefatica

    Joined:
    May 20, 2008
    Messages:
    8,129
    Likes Received:
    33
    (Mostly a FYI for plugin writers ...) I wanted my plugin to provide help in the console in response to the HELP command and in a message box in response to F1 or Ctrl-F1. Figuring out which to so was just a matter of checking GetAsyncKeyState(VK_F1).

    I wanted the message box to be silent, i.e., to not play the sound associated with the message box's icon (or the default sound). This was easy with MessageBoxIndirect() and the style MB_USERICON. So I did this:

    Code:
    MSGBOXPARAMS mbp = {sizeof(mbp), NULL, (HINSTANCE) GetModuleHandle(NULL),
        item[i].Help, pluginfo.pszDll, MB_OK | MB_USERICON,
        MAKEINTRESOURCE(53), 0, 0, MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT)};
    MessageBoxIndirect(&mbp);
    Rex, I see that resource 53 (icon) goes back to v10 at least. Is it likely to stay that way?
     
  2. vefatica

    Joined:
    May 20, 2008
    Messages:
    8,129
    Likes Received:
    33
    Again, FYI ...

    I had some trouble getting the msgbox to appear on the same monitor as TCMD when TCC was in TCMD. This seems to work nicely.

    Code:
    INT WINAPI Help ( WCHAR *psz )
    {
        INT i = GetItemIndexFromName(psz);
        if ( i >= 0 )
        {
            // if F1 pressed display help in silent msgbox with TCC icon
            if ( GetAsyncKeyState(VK_F1) & 0x8000 )
            {
                HWND hWnd = GetConsoleWindow();
                WCHAR szHwnd[16];
                if ( !TakeCommandIPC(L"HWND", szHwnd) )
                {
                    hWnd = (HWND) wcstoul(szHwnd, NULL, 10);
                }
                MSGBOXPARAMS mbp = {sizeof(mbp), hWnd, (HINSTANCE) GetModuleHandle(NULL),
                    item[i].Help, pluginfo.pszDll, MB_OK | MB_USERICON,
                    MAKEINTRESOURCE(53), 0, 0, MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT)};
                MessageBoxIndirect(&mbp);
            }
            else // display help in the console
            {
                Printf(L"%s\r\n", item[i].Help);
            }
            return 1; // displayed help
        }
        return 0; // didn't display help
    }
     

Share This Page