SQUARE.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- * SQUARE.H
- * Square Automation Object Chapter 15
- *
- * Definitions, classes, and prototypes for an EXE that
- * provides Square objects to automation controllers
- *
- * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
- *
- * Kraig Brockschmidt, Microsoft
- * Internet : kraigb@microsoft.com
- * Compuserve: >INTERNET:kraigb@microsoft.com
- */
- #ifndef _SQUARE_H_
- #define _SQUARE_H_
- //Get the object definitions
- #define INC_AUTOMATION
- #define CHAPTER15
- #define GUIDS_FROM_TYPELIB
- #include <inole.h>
- #include <math.h>
- #include "isquare.h"
- LRESULT APIENTRY MainWndProc(HWND, UINT, WPARAM, LPARAM);
- class CApp
- {
- friend LRESULT APIENTRY MainWndProc(HWND, UINT, WPARAM, LPARAM);
- protected:
- HINSTANCE m_hInst; //WinMain parameters
- HINSTANCE m_hInstPrev;
- LPSTR m_pszCmdLine;
- UINT m_nCmdShow;
- BOOL m_fInitialized; //Did CoInitialize work?
- LPCLASSFACTORY m_pIClassFactory; //Our class factory
- DWORD m_dwRegCO; //Registration key
- public:
- CApp(HINSTANCE, HINSTANCE, LPSTR, UINT);
- ~CApp(void);
- BOOL Init(void);
- };
- typedef CApp *PCApp;
- void ObjectDestroyed(void);
- class CSquareClassFactory : public IClassFactory
- {
- protected:
- ULONG m_cRef;
- HWND m_hWnd; //Main window (hidden)
- HINSTANCE m_hInst; //Module instance
- public:
- CSquareClassFactory(HWND, HINSTANCE);
- ~CSquareClassFactory(void);
- //IUnknown members
- STDMETHODIMP QueryInterface(REFIID, PPVOID);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
- //IClassFactory members
- STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, PPVOID);
- STDMETHODIMP LockServer(BOOL);
- };
- typedef CSquareClassFactory *PCSquareClassFactory;
- //Information for the window in which we draw
- LRESULT APIENTRY SquareWndProc(HWND, UINT, WPARAM, LPARAM);
- #define SZCLASSSQUARE TEXT("SquareWindow")
- class CSquare : public ISphereSquare
- {
- friend LRESULT APIENTRY SquareWndProc(HWND, UINT, WPARAM
- , LPARAM);
- protected:
- ULONG m_cRef; //Object reference count
- HWND m_hWnd; //Drawing window.
- ITypeInfo *m_pITypeInfo; //Loaded
- IUnknown *m_pIUnkDisp; //From CreateStdDispatch
- //Plotting variables
- double m_cRadius; //Edge length
- double m_dTheta; //Angle
- double m_dDeclin; //Declination
- int m_xOrg, m_yOrg; //Origin point
- int m_cx, m_cy; //Window size
- int m_xPos, m_yPos; //Window position
- COLORREF m_crLinePos; //Positive line color
- HPEN m_hPenPos; //Positive line pen
- COLORREF m_crLineNeg; //Negative line color
- HPEN m_hPenNeg; //Negative line pen
- COLORREF m_crBack; //Background color
- public:
- CSquare(void);
- ~CSquare(void);
- BOOL Init(HWND, HINSTANCE);
- void CreatePens(BOOL, BOOL);
- void Draw(HDC);
- //IUnknown Members
- STDMETHODIMP QueryInterface(REFIID, PPVOID);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
- //ISphereSquare members
- STDMETHODIMP_(double) get_Radius(void);
- STDMETHODIMP_(void) put_Radius(double);
- STDMETHODIMP_(double) get_Theta(void);
- STDMETHODIMP_(void) put_Theta(double);
- STDMETHODIMP_(double) get_Declination(void);
- STDMETHODIMP_(void) put_Declination(double);
- STDMETHODIMP_(long) get_BackColor(void);
- STDMETHODIMP_(void) put_BackColor(long);
- STDMETHODIMP_(long) get_LineColorPositive(void);
- STDMETHODIMP_(void) put_LineColorPositive(long);
- STDMETHODIMP_(long) get_LineColorNegative(void);
- STDMETHODIMP_(void) put_LineColorNegative(long);
- STDMETHODIMP_(void) Draw(void);
- STDMETHODIMP_(void) SetCenterPoint(int, int);
- STDMETHODIMP_(void) ShowWindow(int);
- STDMETHODIMP_(void) SetWindowPosition(int, int);
- STDMETHODIMP_(void) SetWindowSize(int, int);
- };
- typedef CSquare *PCSquare;
- #define CBSQUAREWNDEXTRA sizeof(PCSquare)
- #define SQWL_STRUCTURE 0
- //Handy constant
- #define PI 3.1415926535
- #endif //_SQUARE_H_