WinFinder.cpp
上传用户:lwzh1970
上传日期:2007-01-01
资源大小:33k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // WinFinder.cpp : Implementation of CWinFinderApp and DLL registration.
  2. #include "stdafx.h"
  3. #include "WinFinder.h"
  4. #ifdef _DEBUG
  5. #define new DEBUG_NEW
  6. #undef THIS_FILE
  7. static char THIS_FILE[] = __FILE__;
  8. #endif
  9. CWinFinderApp NEAR theApp;
  10. const GUID CDECL BASED_CODE _tlid =
  11. { 0xdca2aa0, 0xc50f, 0x11d2, { 0x95, 0x80, 0x20, 0xb3, 0x4e, 0xc1, 0, 0 } };
  12. const WORD _wVerMajor = 1;
  13. const WORD _wVerMinor = 0;
  14. ////////////////////////////////////////////////////////////////////////////
  15. // CWinFinderApp::InitInstance - DLL initialization
  16. BOOL CWinFinderApp::InitInstance()
  17. {
  18. BOOL bInit = COleControlModule::InitInstance();
  19. if (bInit)
  20. {
  21. // TODO: Add your own module initialization code here.
  22. }
  23. return bInit;
  24. }
  25. ////////////////////////////////////////////////////////////////////////////
  26. // CWinFinderApp::ExitInstance - DLL termination
  27. int CWinFinderApp::ExitInstance()
  28. {
  29. // TODO: Add your own module termination code here.
  30. return COleControlModule::ExitInstance();
  31. }
  32. /////////////////////////////////////////////////////////////////////////////
  33. // DllRegisterServer - Adds entries to the system registry
  34. // I did not write this code
  35. void DrawWindowFrame (HWND hwndSubject)
  36. {
  37.    HDC hdc;
  38.    RECT rc;
  39.    HPEN hpen;
  40.    
  41.    // Retrieve location of window on-screen.
  42.    GetWindowRect(hwndSubject, &rc);
  43.    // Get a device context that allows us to write anywhere within the window.
  44.    // NOTE: GetDC would allow us to write only in the window's client area.
  45.    hdc = GetWindowDC(hwndSubject);
  46.    // Save the original device context attributes.
  47.    SaveDC(hdc);
  48.    
  49.    // To guarantee that the frame will be visible, tell Windows to draw the
  50.    // frame using the inverse screen color.
  51.    SetROP2(hdc, R2_NOT);
  52.    // Create a pen that is three times the width of a nonsizeable border. The
  53.    // color will not be used to draw the frame, so its value could be
  54.    // anything. PS_INSIDEFRAME tells windows that the entire frame should be
  55.    // enclosed within the window.
  56.    hpen = CreatePen(PS_INSIDEFRAME, 3 * GetSystemMetrics(SM_CXBORDER),
  57.       RGB(0, 0, 0));
  58.    SelectObject(hdc, hpen);
  59.    // We must select a NULL brush so that the contents of the window will not
  60.    // be overwritten.
  61.    SelectObject(hdc, GetStockObject(NULL_BRUSH));
  62.    // Draw the frame. Because the device context is relative to the window,
  63.    // the top-left corner is (0, 0) and the lower right corner is (width of
  64.    // window, height of window).
  65.    Rectangle(hdc, 0, 0, rc.right - rc.left, rc.bottom - rc.top);
  66.    // Restore the original attributes and release the device context.
  67.    RestoreDC(hdc, -1);
  68.    ReleaseDC(hwndSubject, hdc);
  69.    // We can destroy the pen only AFTER we have restored the DC because the DC 
  70.    // must have valid objects selected into it at all times.
  71.    DeleteObject(hpen);
  72. }
  73. STDAPI DllRegisterServer(void)
  74. {
  75. AFX_MANAGE_STATE(_afxModuleAddrThis);
  76. if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
  77. return ResultFromScode(SELFREG_E_TYPELIB);
  78. if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
  79. return ResultFromScode(SELFREG_E_CLASS);
  80. return NOERROR;
  81. }
  82. /////////////////////////////////////////////////////////////////////////////
  83. // DllUnregisterServer - Removes entries from the system registry
  84. STDAPI DllUnregisterServer(void)
  85. {
  86. AFX_MANAGE_STATE(_afxModuleAddrThis);
  87. if (!AfxOleUnregisterTypeLib(_tlid))
  88. return ResultFromScode(SELFREG_E_TYPELIB);
  89. if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
  90. return ResultFromScode(SELFREG_E_CLASS);
  91. return NOERROR;
  92. }