Beispiel #1
0
HWND
CreateNewMDIChild(PCONSOLE_MAINFRAME_WND Info,
                  HWND hwndMDIClient)
{
    MDICREATESTRUCT mcs;
    HWND hChild;

    mcs.szTitle = CreateNewConsoleTitle();
    mcs.szClass = szMMCChildFrm;
    mcs.hOwner  = GetModuleHandle(NULL);
    mcs.x = mcs.cx = CW_USEDEFAULT;
    mcs.y = mcs.cy = CW_USEDEFAULT;
    mcs.style = MDIS_ALLCHILDSTYLES;

    hChild = (HWND)SendMessage(hwndMDIClient, WM_MDICREATE, 0, (LPARAM)&mcs);
    if (hChild)
    {
        Info->nConsoleCount++;
    }

    return hChild;
}
Beispiel #2
0
static LRESULT CALLBACK
ConsoleMainFrameWndProc(IN HWND hwnd,
                        IN UINT uMsg,
                        IN WPARAM wParam,
                        IN LPARAM lParam)
{
    PCONSOLE_MAINFRAME_WND Info;
    LRESULT Ret = FALSE;

    Info = (PCONSOLE_MAINFRAME_WND)GetWindowLongPtr(hwnd,
                                                    0);

    if (Info != NULL || uMsg == WM_NCCREATE)
    {
        switch (uMsg)
        {
            case WM_COMMAND:
            {
                switch (LOWORD(wParam))
                {
                    case ID_FILE_EXIT:
                        PostMessage(hwnd,
                                    WM_CLOSE,
                                    0,
                                    0);
                        break;
                }
                break;
            }

            case WM_NCCREATE:
            {
                MainFrameWndCount++;

                Info = HeapAlloc(hAppHeap,
                                 0,
                                 sizeof(*Info));
                if (Info != NULL)
                {
                    ZeroMemory(Info,
                               sizeof(*Info));

                    Info->hwnd = hwnd;

                    SetWindowLongPtr(hwnd,
                                     0,
                                     (LONG_PTR)Info);

                    Info->hMenuConsoleRoot = LoadMenu(hAppInstance,
                                                      MAKEINTRESOURCE(IDM_CONSOLEROOT));
                    Ret = TRUE;
                }
                break;
            }

            case WM_CREATE:
            {
                LPCTSTR lpFileName = (LPCTSTR)(((LPCREATESTRUCT)lParam)->lpCreateParams);

                if (lpFileName != NULL)
                {
                    /* FIXME */
                }
                else
                {
                    Info->AppAuthorMode = TRUE;
                    Info->lpConsoleTitle = CreateNewConsoleTitle();
                }

                SetWindowText(Info->hwnd,
                              Info->lpConsoleTitle);
                break;
            }

            case WM_NCDESTROY:
                SetMenu(Info->hwnd,
                        NULL);

                if (Info->hMenuConsoleRoot != NULL)
                {
                    DestroyMenu(Info->hMenuConsoleRoot);
                    Info->hMenuConsoleRoot = NULL;
                }

                HeapFree(hAppHeap,
                         0,
                         Info);

                if (--MainFrameWndCount == 0)
                    PostQuitMessage(0);
                break;


            case WM_CLOSE:
                DestroyWindow(hwnd);
                break;

            default:
                goto HandleDefaultMsg;
        }
    }
    else
    {
HandleDefaultMsg:
        Ret = DefWindowProc(hwnd,
                            uMsg,
                            wParam,
                            lParam);
    }

    return Ret;
}