home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
PROG_C
/
COOLWORX.ZIP
/
DEMO
/
SDIEDIT
/
SDIEDIT.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-02-11
|
9KB
|
253 lines
/*****************************************
* 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);
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));
}