Example #1
0
int InitBurnerMDI (HWND hParentWnd)
{
	CLIENTCREATESTRUCT ccs;
	ccs.hWindowMenu		= NULL;
	ccs.idFirstChild	= ID_MDI_START_CHILD;
	UINT nWindowStyle	= WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE;
	UINT nWindowStyleEx	= 0;

	hWndChildFrame		= CreateWindowEx( nWindowStyleEx, szMDIFrameClass, NULL, nWindowStyle, 0, 0, 0, 0, hParentWnd, NULL, hAppInst, (LPVOID)&ccs );
	
	//if(!hWndChildFrame) MessageBox(hWnd, _T("Could not create MDI client."), _T("Error"), MB_OK | MB_ICONERROR);

	hVideoWindow		= nVidFullscreen ? NULL : CreateNewMDIChild(hWndChildFrame);

	return 0;
}
Example #2
0
static VOID
FrameOnCommand(HWND hwnd,
               UINT uMsg,
               WPARAM wParam,
               LPARAM lParam)
{
    PCONSOLE_MAINFRAME_WND Info;
    HWND hChild;

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

    switch (LOWORD(wParam))
    {
        case IDM_FILE_NEW:
            CreateNewMDIChild(Info, hwndMDIClient);
            SetMenu(Info->hwnd,
                    Info->hMenuConsoleLarge);
            break;

        case IDM_FILE_SAVE:
            FrameOnSave(hwnd);
            break;

        case IDM_FILE_SAVEAS:
            FrameOnSaveAs(hwnd);
            break;

        case IDM_FILE_EXIT:
            PostMessage(hwnd, WM_CLOSE, 0, 0);
            break;

        default:
            if (LOWORD(wParam) >= IDM_MDI_FIRSTCHILD)
            {
                DefFrameProc(hwnd, hwndMDIClient, uMsg, wParam, lParam);
            }
            else
            {
                hChild = (HWND)SendMessage(hwndMDIClient, WM_MDIGETACTIVE, 0, 0);
                if (hChild)
                {
                    SendMessage(hChild, WM_COMMAND, wParam, lParam);
                }
            }
            break;
    }
}
CDocument* CMyDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible)
{
	if (lpszPathName == NULL)
	{
		TRACE(_T("Creating new documents is disabled.\n"));
		return NULL;
	}

	CWaitCursor wait;

	CDocument* pDocument = CreateNewDocument();
	if (pDocument == NULL)
	{
		TRACE(_T("CDocTemplate::CreateNewDocument returned NULL.\n"));
		AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
		return NULL;
	}
	ASSERT_VALID(pDocument);

	BOOL bAutoDelete = pDocument->m_bAutoDelete;
	pDocument->m_bAutoDelete = false;   // don't destroy if something goes wrong

	CWnd* pMDIChild = CreateNewMDIChild(pDocument);

	pDocument->m_bAutoDelete = bAutoDelete;
	if (pMDIChild == NULL)
	{
		AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
		delete pDocument;       // explicit delete on error
		return NULL;
	}
	ASSERT_VALID(pMDIChild);

	// open an existing document
	if (!pDocument->OnOpenDocument(lpszPathName))
	{
		// user has be alerted to what failed in OnOpenDocument
		TRACE(_T("CDocument::OnOpenDocument returned FALSE.\n"));
		pMDIChild->DestroyWindow();
		return NULL;
	}
	pDocument->SetPathName(lpszPathName);

	InitialUpdateMDIChild(pMDIChild, pDocument, bMakeVisible);
	return pDocument;
}
Example #4
0
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg)
	{
		case WM_CREATE:
			{
				//Create Toolbar
				HWND hTool;
				TBBUTTON tbb[3];
				TBADDBITMAP tbab;

				hTool = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 100, 100,
						hwnd, (HMENU)IDC_MAIN_TOOL, GetModuleHandle(NULL), NULL);
				if (hTool == NULL)
					MessageBox(hwnd, "Could not create tool bar.", "Error", MB_OK | MB_ICONERROR);

				//Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility.
				SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);

				tbab.hInst = HINST_COMMCTRL;
				tbab.nID = IDB_STD_SMALL_COLOR;
				SendMessage(hTool, TB_ADDBITMAP, 0, (LPARAM)&tbab);

				ZeroMemory(tbb, sizeof(tbb));
				tbb[0].iBitmap = STD_FILENEW;
				tbb[0].fsState = TBSTATE_ENABLED;
				tbb[0].fsStyle = TBSTYLE_BUTTON;
				tbb[0].idCommand = ID_FILE_NEW;

				tbb[1].iBitmap = STD_FILEOPEN;
				tbb[1].fsState = TBSTATE_ENABLED;
				tbb[1].fsStyle = TBSTYLE_BUTTON;
				tbb[1].idCommand = ID_FILE_OPEN;

				tbb[2].iBitmap = STD_FILESAVE;
				tbb[2].fsState = TBSTATE_ENABLED;
				tbb[2].fsStyle = TBSTYLE_BUTTON;
				tbb[2].idCommand = ID_FILE_SAVEAS;

				SendMessage(hTool, TB_ADDBUTTONS, sizeof(tbb)/sizeof(TBBUTTON), (LPARAM)&tbb);

				//Create Status bar
				HWND hStatus;
				int statwidths[] = {100, -1};

				hStatus = CreateWindowEx(0, STATUSCLASSNAME, NULL,
						WS_CHILD | WS_VISIBLE | SBARS_SIZEGRIP, 0, 0, 0, 0,
						hwnd, (HMENU)IDC_MAIN_STATUS, GetModuleHandle(NULL), NULL);

				SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
				SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");

				//Create Client Window
				CLIENTCREATESTRUCT ccs;

				ccs.hWindowMenu = GetSubMenu(GetMenu(hwnd), 2);
				ccs.idFirstChild = ID_MDI_FIRSTCHILD;

				g_hMDIClient = CreateWindowEx(WS_EX_CLIENTEDGE, "mdiclient", NULL, 
						WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL | WS_VISIBLE,
						CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
						hwnd, (HMENU)IDC_MAIN_MDI, GetModuleHandle(NULL), (LPVOID)&ccs);

				break;
			}
		case WM_SIZE:
			{
				//Size toolbar and get height
				HWND hTool;
				RECT rcTool;
				int iToolHeight;

				hTool = GetDlgItem(hwnd, IDC_MAIN_TOOL);
				SendMessage(hTool, TB_AUTOSIZE, 0, 0);

				GetWindowRect(hTool, &rcTool);
				iToolHeight = rcTool.bottom - rcTool.top;

				//Size status bar and get height
				HWND hStatus;
				RECT rcStatus;
				int iStatusHeight;

				hStatus = GetDlgItem(hwnd, IDC_MAIN_STATUS);
				SendMessage(hStatus, WM_SIZE, 0, 0);

				GetWindowRect(hStatus, &rcStatus);
				iStatusHeight = rcStatus.bottom - rcStatus.top;

				//Calculata remaining height and size client window
				HWND hMDI;
				int iMDIHeight;
				RECT rcClient;

				GetClientRect(hwnd, &rcClient);
				iMDIHeight = rcClient.bottom - iToolHeight - iStatusHeight;
				hMDI = GetDlgItem(hwnd, IDC_MAIN_MDI);
				SetWindowPos(hMDI, NULL, 0, iToolHeight, rcClient.right, iMDIHeight, SWP_NOZORDER);

				break;
			}
		case WM_MDIACTIVATE:
			{
				HMENU hMenu, hFileMenu;
				UINT EnableFlag;

				hMenu = GetMenu(g_hMainWindow);
				if (hwnd == (HWND)lParam)
					EnableFlag = MF_ENABLED;
				else
					EnableFlag = MF_GRAYED;

				EnableMenuItem(hMenu, 1, MF_BYPOSITION | EnableFlag);
				EnableMenuItem(hMenu, 2, MF_BYPOSITION | EnableFlag);

				hFileMenu = GetSubMenu(hMenu, 0);
				EnableMenuItem(hFileMenu, ID_FILE_SAVEAS, MF_BYCOMMAND | EnableFlag);
				EnableMenuItem(hFileMenu, ID_FILE_CLOSE, MF_BYCOMMAND | EnableFlag);
				EnableMenuItem(hFileMenu, ID_FILE_CLOSEALL, MF_BYCOMMAND | EnableFlag);

				DrawMenuBar(g_hMainWindow);

				break;
			}
		case WM_COMMAND:
			switch (LOWORD(wParam))
			{
				case ID_FILE_EXIT:
					PostMessage(hwnd, WM_CLOSE, 0, 0);
					break;
				case ID_FILE_NEW:
					CreateNewMDIChild(g_hMDIClient);
					break;
				case ID_FILE_OPEN:
					{
						HWND hChild = CreateNewMDIChild(g_hMDIClient);
						if (hChild)
							DoFileOpen(hChild);
						break;
					}
				case ID_FILE_CLOSE:
					{
						HWND hChild = (HWND)SendMessage(g_hMDIClient, WM_MDIGETACTIVE, 0, 0);
						if (hChild)
							SendMessage(hChild, WM_CLOSE, 0, 0);
						break;
					}
				case ID_FILE_SAVEAS:
					{
						HWND hChild = (HWND)SendMessage(g_hMDIClient, WM_MDIGETACTIVE, 0, 0);
						if (hChild)
							DoFileSave(hChild);
						break;
					}
				case ID_WINDOW_TILE:
					SendMessage(g_hMDIClient, WM_MDITILE, 0, 0);
					break;
				case ID_WINDOW_CASCADE:
					SendMessage(g_hMDIClient, WM_MDICASCADE, 0, 0);
					break;

				default:
					{
						if (LOWORD(wParam) >= ID_MDI_FIRSTCHILD)
							DefFrameProc(hwnd, g_hMDIClient, msg, wParam, lParam);
						else
						{
							HWND hChild = (HWND)SendMessage(g_hMDIClient, WM_MDIGETACTIVE, 0, 0);
							if (hChild)
								SendMessage(hChild, WM_COMMAND, wParam, lParam);
						}
					}
			}
			break;
		case WM_CLOSE:
			DestroyWindow(hwnd);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return DefFrameProc(hwnd, g_hMDIClient, msg, wParam, lParam);
	}
	return 0;
}