Example #1
0
LRESULT MainFrame::OnFileRecent(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
   // check if we have to save the current one
   bool bRet = !m_view.QueryClose();
   if (bRet)
   {
      if (!m_view.DoFileSaveAs())
         return 0;
   }

   // get file name from the MRU list
   CString cszFile;
   if (m_mru.GetFromList(wID, cszFile))
   {
      CString cszFileName = Path(cszFile).FilenameAndExt();

      // open file
      if (DoFileOpen(cszFile, cszFileName))
         m_mru.MoveToTop(wID);
      else
         m_mru.RemoveFromList(wID);
      m_mru.WriteToRegistry(c_pszSettingsRegkey);
   }
   else
   {
      ::MessageBeep(MB_ICONERROR);
   }

   return 0;
}
/*
	ParseCmdLinePriv

	Parse the command line when the applcation first starts.
*/
void ParseCmdLinePriv(LPSTR cmdLine)
{
	LPSTR lpCmdLine, lpT;

	if(cmdLine == NULL)
		lpCmdLine = GetCommandLine();
	else
		lpCmdLine = cmdLine;

	if (*lpCmdLine) {
		lpT = strchr(lpCmdLine, ' ');   // skip self name
		if (lpT) {
			lpCmdLine = lpT;
			while (*lpCmdLine == ' ') {
				lpCmdLine++;            // skip spaces to end or first cmd
			}

			while (*lpCmdLine != '\0'){
				char buff[255];
				int i;
				for (i = 0; (*lpCmdLine != ' ') && (*lpCmdLine != '\0'); i++, lpCmdLine++) {
					buff[i] = *lpCmdLine;
				}

				// Null terminate
				if(*lpCmdLine != '\0')
					lpCmdLine++;
				
				buff[i] = '\0';

				// Open the file
				DoFileOpen(buff);	
			}

		} else
			lpCmdLine += strlen(lpCmdLine);   // point to NULL
		
	}
}  
Example #3
0
LRESULT MainFrame::OnFileOpen(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
   CFileDialog dlg(TRUE, NULL, _T(""), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, g_pszLuaScriptingFilter);
   int iRet = dlg.DoModal(m_hWnd);

   if (iRet == IDOK)
   {
      bool bRet = m_view.QueryClose();
      if (!bRet)
      {
         if (!DoFileSaveAs())
            return 0;
      }

      if (DoFileOpen(dlg.m_ofn.lpstrFile, dlg.m_ofn.lpstrFileTitle))
      {
         m_mru.AddToList(dlg.m_ofn.lpstrFile);
         m_mru.WriteToRegistry(c_pszSettingsRegkey);
      }
   }
   return 0;
}
Example #4
0
fnOpenFile(LPSTR lpstrFileName) // filename may be NULL
{
 extern int vfCloseFilesInDialog;
 extern int docCur;
 extern HANDLE hMmwModInstance;
 extern HANDLE hParentWw;
 extern struct SEL selCur;
 extern typeCP cpMinDocument;

 /* Close all files on removable media for every message we get */
 vfCloseFilesInDialog = TRUE;

 /* Close all files on removable media so changing disks is safe */
 CloseEveryRfn( TRUE );

 /* test for dirty file and offer opportunity to save */

 if (FConfirmSave())
    DoFileOpen(lpstrFileName);

 vfCloseFilesInDialog = FALSE;
}
Example #5
0
LRESULT MainFrame::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
   SetupCmdBar();
   SetupRibbonBar();
   SetupToolbar();
   SetupMRUList();
   SetupStatusBar();
   SetupView();

   // register object for message filtering and idle updates
   CMessageLoop* pLoop = _Module.GetMessageLoop();
   ATLASSERT(pLoop != NULL);
   pLoop->AddMessageFilter(this);
   pLoop->AddIdleHandler(this);

   {
      bool bRibbonUI = RunTimeHelper::IsRibbonUIAvailable();
      ShowRibbonUI(bRibbonUI);
      UISetCheck(ID_VIEW_RIBBON, bRibbonUI);
   }

   if (m_cszFilenameOpenAtStart.IsEmpty())
      DoFileNew();
   else
   {
      CString cszTitle = Path(m_cszFilenameOpenAtStart).FilenameAndExt();
      if (DoFileOpen(m_cszFilenameOpenAtStart, cszTitle))
      {
         m_mru.AddToList(m_cszFilenameOpenAtStart);
         m_mru.WriteToRegistry(c_pszSettingsRegkey);
      }
   }

   UIEnable(ID_SCRIPT_RUN, true);
   UIEnable(ID_SCRIPT_STOP, false);

   return 0;
}
/*
	MainWndProc
*/
LRESULT CALLBACK MainWndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

    CLIENTCREATESTRUCT	clientcreate;
	DWORD				dwStyle;	

    switch (message) 
    {

      case WM_CREATE:
        SetWindowLong(hwnd, 0, (LONG)NULL);
        clientcreate.hWindowMenu  = hMenuWindow;
        clientcreate.idFirstChild = 1;
	
		dwStyle = WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE;			

		// Create our child window
		ghwndClient = CreateWindow("MDICLIENT", NULL,
										dwStyle,
										0,0,0,0,
										hwnd, NULL, ghModule, (LPVOID)&clientcreate);

        return 0L;

      case WM_DESTROY: 
		PostQuitMessage(0);
        return 0L;

      case WM_SYSCOMMAND:
		if ( LOWORD(wParam) == MM_ABOUT)   {
			SendMessage(hwnd,WM_COMMAND,MM_ABOUT,0);
			return 0;
		} else
              return DefWindowProc (hwnd, message, wParam, lParam);
		break;

      case WM_COMMAND:

        switch (LOWORD(wParam)) 
        {
            
			// File Menu
			case ID_FILE_OPEN: 
				if(DoFileOpen(NULL))
					return 0L;
				break;
			
			case ID_FILE_CLOSE:
				DestroyWindow((HWND)SendMessage(ghwndClient, WM_MDIGETACTIVE, 0L, FALSE));
				break;

			case ID_FILE_EXIT:
	            PostMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0L);
	            break;
			
			// Window Menu
            case IDM_TILE:
                SendMessage(ghwndClient, WM_MDITILE, 0L, 0L);
                return 0L;
            
			case IDM_CASCADE:
                SendMessage(ghwndClient, WM_MDICASCADE, 0L, 0L);
                return 0L;
            
			case IDM_ARRANGE:
                SendMessage(ghwndClient, WM_MDIICONARRANGE, 0L, 0L);
                return 0L;

            case ID_WINDOW_ABOUT:
                if (DialogBox(ghModule, "AboutBox", ghwndMain, (DLGPROC)About) == -1){
					MessageBox(ghwndMain, "About Dialog Creation Error!", "Error", MB_OK);
				}
				return 0L;

            default:
                return DefFrameProc(hwnd,  ghwndClient, message, wParam, lParam);
        }

    default:

        return DefFrameProc(hwnd,  ghwndClient, message, wParam, lParam);
    }
}
Example #7
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;
}
Example #8
0
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
		case WM_CREATE:
		{
			HFONT hfDefault;
			HWND hEdit;

			HWND hTool;
			TBBUTTON tbb[3];
			TBADDBITMAP tbab;

			HWND hStatus;
			int statwidths[] = {100, -1};

			// Create Edit Control

			hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
				WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 
				0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);
			if(hEdit == NULL)
				MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);

			hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
			SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));

			// Create Toolbar

			hTool = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
				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

			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 :)");
		}
		break;
		case WM_SIZE:
		{
			HWND hTool;
			RECT rcTool;
			int iToolHeight;

			HWND hStatus;
			RECT rcStatus;
			int iStatusHeight;

			HWND hEdit;
			int iEditHeight;
			RECT rcClient;

			// Size toolbar and get height

			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

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

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

			// Calculate remaining height and size edit

			GetClientRect(hwnd, &rcClient);

			iEditHeight = rcClient.bottom - iToolHeight - iStatusHeight;

			hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
			SetWindowPos(hEdit, NULL, 0, iToolHeight, rcClient.right, iEditHeight, SWP_NOZORDER);
		}
		break;
		case WM_CLOSE:
			DestroyWindow(hwnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
		break;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case ID_FILE_EXIT:
					PostMessage(hwnd, WM_CLOSE, 0, 0);
				break;
				case ID_FILE_NEW:
					SetDlgItemText(hwnd, IDC_MAIN_EDIT, "");
				break;
				case ID_FILE_OPEN:
					DoFileOpen(hwnd);
				break;
				case ID_FILE_SAVEAS:
					DoFileSave(hwnd);
				break;
			}
		break;
		default:
			return DefWindowProc(hwnd, msg, wParam, lParam);
	}
	return 0;
}