home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 8
/
CDASC08.ISO
/
NEWS
/
4418
/
DEMO
/
SOURCE.ZIP
/
DRAWPROC.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1993-05-02
|
3KB
|
102 lines
#include <windows.h>
#include <windowsx.h>
#include "winx31ad.h"
#include <shellapi.h>
#include <commdlg.h>
#include <string.h>
#include <stdlib.h>
#include "bmpef.h"
#include "bmpwks.h"
#include "drawproc.h"
static BOOL OnCreate(HWND hwnd, CREATESTRUCT FAR *lpCreateStruct)
{
LPWNDINFO lpWndInfo ;
HWND hWndApp;
BOOL fRet = TRUE;
char szFn[128];
LPMDICREATESTRUCT lpMdiCreateStruct =
(LPMDICREATESTRUCT)(lpCreateStruct -> lpCreateParams);
hWndApp = hwnd;
while (GetParent(hWndApp)!=NULL) hWndApp = GetParent(hWndApp);
lpWndInfo = (LPWNDINFO) GlobalAllocPtr(GHND,sizeof(WNDINFO));
lpWndInfo->hwndParent = lpCreateStruct->hwndParent;
lpWndInfo->hWndApp = hWndApp;
SetWindowLong(hwnd,0,(LONG)lpWndInfo);
lstrcpy(szFn,(LPSTR)(lpMdiCreateStruct->lParam));
if (fRet) (fRet = DoTryLoad(hwnd,szFn));
if (!fRet)
{
SetWindowLong(hwnd,0,0L);
GlobalFreePtr(lpWndInfo);
}
return (fRet);
}
static void OnDestroy(HWND hwnd)
{
LPWNDINFO lpWndInfo ;
lpWndInfo = GETLPWNDINFO(hwnd);
if (lpWndInfo->hPal != NULL)
DeleteObject(lpWndInfo->hPal);
if (lpWndInfo->hBitmap != NULL)
DeleteObject(lpWndInfo->hBitmap);
if (lpWndInfo->lpBmp != NULL)
GlobalFreePtr(lpWndInfo->lpBmp);
GlobalFreePtr(lpWndInfo);
SetWindowLong(hwnd,0,(LONG)0);
}
void OnCommand(HWND hWnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch(id)
{
case IDM_NEW:
DoNew(hWnd);
break;
case IDM_SAVE:
case IDM_SAVEAS:
DoTrySave(hWnd);
break;
case IDM_ROTATE:
DoRotate(hWnd);
break;
case IDM_EXIT:
{
LPWNDINFO lpWndInfo = GETLPWNDINFO(hWnd);
SendMessage(lpWndInfo->hWndApp,WM_CLOSE,0,0);
break;
}
default :
DefMDIChildProc(hWnd, WM_COMMAND,
GET_WM_COMMAND_MPS (id,hwndCtl,(WORD)codeNotify));
}
}
long CALLBACK DrawWndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
{
switch (uiMsg)
{
HANDLE_MSG(hWnd, WM_CREATE, OnCreate);
HANDLE_MSG(hWnd, WM_PAINT, OnPaint);
//HANDLE_MSG(hWnd, WM_LBUTTONDOWN, OnLButtonDown);
//HANDLE_MSG(hWnd, WM_LBUTTONUP, OnLButtonUp);
//HANDLE_MSG(hWnd, WM_MOUSEMOVE, OnMouseMove);
HANDLE_MSG(hWnd, WM_COMMAND, OnCommand);
HANDLE_MSG(hWnd, WM_DESTROY, OnDestroy);
HANDLE_MSG(hWnd, WM_QUERYNEWPALETTE, OnQueryNewPalette);
HANDLE_MSG(hWnd, WM_ACTIVATE, OnActivate);
HANDLE_MSG(hWnd, WM_MDIACTIVATE, OnMDIActivate);
}
return DefMDIChildProc(hWnd, uiMsg, wParam, lParam);
}