////////////////////////////////////////////////////////////////////////// // // draggeo.cpp // // This is the windows application that is used to host the // DAViewerControl. // // // (C) Copyright 1997 by Microsoft Corporation. All rights reserved. // ////////////////////////////////////////////////////////////////////////// #define INITGUID #include #include "dactl.h" #include "ctlhost.h" #include "resource.h" #define WINDOW_CLASS "BEHAVIOR HOOK" #define WINDOW_TITLE "BEHAVIOR HOOK" VARIANT_BOOL fCaptioningOn = FALSE; VARIANT_BOOL fStatusOn = TRUE; VARIANT_BOOL fToolBarOn = TRUE; // Local Function Prototypes HRESULT loadDXAControl(HWND hwnd); LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); WORD wLastMenuItem; CControlHost *ocHost = NULL; // oc host ////////////////////////////////////////////////////////////////////////// // // WinMain // int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR szCmdLine, int iCmdShow) { WNDCLASS wndclass; MSG msg; HWND hwnd; OleInitialize(NULL); wndclass.style = CS_OWNDC; wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = sizeof(LONG)*4; wndclass.hInstance = hInstance; wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = WINDOW_CLASS; RegisterClass(&wndclass); hwnd = CreateWindow(WINDOW_CLASS, WINDOW_TITLE, WS_OVERLAPPED| WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, 400, 400, NULL, NULL, hInstance, NULL); ocHost = new CControlHost(NULL); if (!ocHost) return FALSE; // Load the control. if(FAILED(loadDXAControl(hwnd)) ) return FALSE; ShowWindow(hwnd, SW_SHOW); UpdateWindow(hwnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } OleUninitialize(); return (msg.wParam); } ////////////////////////////////////////////////////////////////////////// HRESULT loadDXAControl(HWND hwnd) { ocHost->SetHwnd(hwnd); return ocHost->CreateControl(); } ////////////////////////////////////////////////////////////////////////// // // WndProc // LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { if(msg == WM_CLOSE || msg == WM_DESTROY) { if(ocHost) { ocHost->DeleteControl(); ocHost = NULL; } PostQuitMessage(0); return (0); } return (DefWindowProc(hwnd, msg, wParam, lParam)); }