home *** CD-ROM | disk | FTP | other *** search
- /*****************************************
- * SDIEdit -- The CoolWorx SDI Editor *
- * *
- * Copyright 1994 by Al Williams Comp. *
- * You may use portions of CoolEdit in *
- * your own code, but you may not *
- * distribute CoolEdit by itself. *
- * *
- *****************************************/
- #include <windows.h>
- #include "sdiedit.h"
- #include "cw.h"
-
- HANDLE hInst;
- HWND mainw;
- HWND editor;
- char ini[]="sdiedit.ini";
-
- /* Forward reference */
- long WINAPI _export win_proc(HWND hWnd, UINT message,
- UINT wParam, LONG lParam);
- int init(HANDLE,HANDLE,int);
-
- int PASCAL WinMain(HANDLE hInstance, HANDLE prev,
- LPSTR cmdline, int show)
- {
- HANDLE acc;
- hInst=hInstance;
- cw_BeginIcons(hInst,LoadIcon(hInst,MAKEINTRESOURCE(APPICON)),
- NULL,NULL);
- if (!init(hInst,prev,show)) return FALSE;
- /* Vanilla event loop */
- acc=LoadAccelerators(hInst,MAKEINTRESOURCE(EMENU));
- cw_Run(mainw,NULL,1,&acc,TRUE,TRUE);
- cw_End(hInst);
- return FALSE;
- }
-
- /* Create window here */
- int init(HANDLE hInstance, HANDLE prev,int nCmdShow)
- {
- HWND hWnd;
- /* Create a main window */
- mainw=hWnd=cw_SDICreate("SDICoolEdit",
- MAKEINTRESOURCE(EMENU),
- hInst,(FARPROC)win_proc,MAKEINTRESOURCE(EMENUBAR),
- NULL,NULL,MAKEINTRESOURCE(STATUS_BAR),0);
- if (!hWnd)
- return FALSE;
- /* Make the window visible, update its client area,
- and return "success" */
- if (nCmdShow==SW_SHOWNORMAL)
- cw_IniPosSet(ini,"Main",hWnd);
- else
- ShowWindow(hWnd,nCmdShow);
- UpdateWindow(hWnd);
- return TRUE;
- }
-
-
-
- /* Window procedure */
- long WINAPI _export win_proc(HWND hWnd, UINT message,
- UINT wParam, LONG lParam)
- {
- switch (message)
- {
- case WM_SETFOCUS:
- if (editor) SetFocus(editor);
- break;
-
- case WM_SIZE:
- {
- RECT r;
- /* Don't use passed in size since
- other code calls WM_SIZE with
- no parameters */
- cw_GetClientRect(hWnd,&r);
- MoveWindow(editor,r.left,r.top,r.right-r.left,
- r.bottom-r.top,TRUE);
- break;
- }
-
- case CW_SDICREATE:
- {
- RECT r;
- cw_GetClientRect(hWnd,&r);
- editor=CreateWindow("CWEDITCLASS",
- "Untitled - 1",WS_CHILD|WS_VISIBLE|
- CE_HSCROLL|CE_VSCROLL,r.left,r.top,
- r.right-r.left,r.bottom-r.top,
- hWnd,1,hInst,0);
- SetFocus(editor);
- cw_EditSDINew(editor);
- SendMessage(hWnd,WM_SETTEXT,0,(DWORD)
- "CoolEdit SDI - Untitled");
- break;
- }
-
- case WM_INITMENU:
- cw_IniOpenMenu(ini,
- GetMenu(hWnd),0,
- 6,4000);
- SendMessage(editor,WM_INITMENU,wParam,
- lParam);
- break;
-
- case CW_HELPID:
- {
- static HWND sb;
- static int oldid;
- if (!sb)
- {
- sb=cw_GetRibbon(hWnd,CWRIBBON_BOTTOM);
- /* Skip the first one so (c) message appears */
- return 0;
- }
- if (oldid==wParam) return 0;
- oldid=wParam;
- cw_StatusHelp(hInst,sb,STATUS_PANE,oldid);
- break;
- }
- case CW_IDLE:
- {
- static unsigned divide=0;
- if (divide++%600==0)
- cw_StatusTime(hWnd,CWRIBBON_BOTTOM,TIME_PANE);
- cw_StatusKeys(hWnd,CWRIBBON_BOTTOM,
- CAP_STATIC,NUM_STATIC,NULL,NULL);
- if (editor)
- {
- SendMessage(editor,CW_INITTOOL,0,(DWORD)hWnd);
- cw_EditStatus(hWnd,CWRIBBON_BOTTOM,editor,
- EDSTAT_PANE,FALSE);
- }
- else
- {
- SendMessage(
- GetDlgItem(
- cw_GetRibbon(hWnd,CWRIBBON_BOTTOM),
- EDSTAT_PANE),WM_SETTEXT,0,(DWORD)"");
- }
- break;
- }
-
- case WM_COMMAND:
- if (wParam>=4000&&wParam<=4010)
- {
- char fn[66];
- cw_IniOpenGet(ini,4000,
- wParam,fn,sizeof(fn));
- if (*fn)
- {
- cw_EditSDINew(editor);
- if (cw_EditOpen(editor,fn,FALSE))
- {
- char title[256];
- wsprintf(title,"CoolEdit SDI - %s",(LPSTR)fn);
- SendMessage(hWnd,WM_SETTEXT,0,(DWORD)title);
- cw_IniOpenSet(ini,fn);
- }
- }
- }
- if (!SendMessage(
- editor,CW_STDMENU,wParam,0))
- switch (wParam)
- {
- case VIEW_FONT:
- {
- if (editor)
- cw_EditSetFont(editor,NULL);
- break;
- }
-
- case VIEW_TB:
- {
- HMENU m=GetMenu(hWnd);
- BOOL ck=GetMenuState(m,VIEW_TB,MF_BYCOMMAND)
- &MF_CHECKED;
- static HWND tb;
- if (!tb) tb=cw_GetRibbon(hWnd,CWRIBBON_TOP);
- ShowWindow(tb,ck?SW_HIDE:SW_SHOW);
- CheckMenuItem(m,VIEW_TB,MF_BYCOMMAND
- |(ck?MF_UNCHECKED:MF_CHECKED));
- SendMessage(hWnd,WM_SIZE,0,0);
- break;
- }
-
- case VIEW_SB:
- {
- HMENU m=GetMenu(hWnd);
- BOOL ck=GetMenuState(m,VIEW_SB,MF_BYCOMMAND)
- &MF_CHECKED;
- static HWND sb;
- if (!sb) sb=cw_GetRibbon(hWnd,CWRIBBON_BOTTOM);
- ShowWindow(sb,ck?SW_HIDE:SW_SHOW);
- CheckMenuItem(m,VIEW_SB,MF_BYCOMMAND
- |(ck?MF_UNCHECKED:MF_CHECKED));
- SendMessage(hWnd,WM_SIZE,0,0);
- break;
- }
-
- case CM_FILENEW:
- cw_EditSDINew(editor);
- SendMessage(hWnd,WM_SETTEXT,0,(DWORD)"CoolEdit SDI - Untitled");
- break;
-
- case CM_FILEOPEN:
- {
- char fn[66];
- if (cw_EditSDIOpenFile(editor,
- fn,sizeof(fn)))
- {
- char title[256];
- wsprintf(title,"CoolEdit SDI - %s",(LPSTR)fn);
- SendMessage(hWnd,WM_SETTEXT,0,(DWORD)title);
- cw_IniOpenSet(ini,fn);
- }
- }
- break;
- case NUM_BUTTON:
- cw_ToggleKeyState(VK_NUMLOCK);
- break;
- case CAP_BUTTON:
- cw_ToggleKeyState(VK_CAPITAL);
- break;
-
- case CM_HELPABOUT:
- /* Use CoolDialog for about box -- no callback is needed
- and there isn't any data to transfer */
- cw_DialogBox(hInst,"ABTBOX",
- mainw,NULL,cw_NullCDlgTemp());
- break;
-
- }
- break;
-
- case WM_QUERYENDSESSION:
- return SendMessage(editor,WM_QUERYENDSESSION,
- 0,0);
-
- case WM_DESTROY:
- cw_IniPosSave(ini,"Main",hWnd);
- PostQuitMessage(0);
- break;
-
-
- }
- return (cw_DefWindowProc(hWnd, message,
- wParam, lParam));
- }
-
-