×

Loading...

Topic

This topic has been archived. It cannot be replied.
  • 工作学习 / IT杂谈 / 程序员的进化-初级
    100 Print "Hello, world!"
    • 程序员的进化-中级
      public class HelloWorld
      {
      public static void main(String[] args)
      {
      System.out.println("Hello, world!");
      }
      }
      • delicious!!!
      • It's my level.
    • 程序员的进化-高级
      本文发表在 rolia.net 枫下论坛// HelloWorld.cpp : Implementation of DLL Exports.


      // Note: Proxy/Stub Information
      // To merge the proxy/stub code into the object DLL, add the file
      // dlldatax.c to the project. Make sure precompiled headers
      // are turned off for this file, and add _MERGE_PROXYSTUB to the
      // defines for the project.
      //
      // If you are not running WinNT4.0 or Win95 with DCOM, then you
      // need to remove the following define from dlldatax.c
      // #define _WIN32_WINNT 0x0400
      //
      // Further, if you are running MIDL without /Oicf switch, you also
      // need to remove the following define from dlldatax.c.
      // #define USE_STUBLESS_PROXY
      //
      // Modify the custom build rule for HelloWorld.idl by adding the following
      // files to the Outputs.
      // HelloWorld_p.c
      // dlldata.c
      // To build a separate proxy/stub DLL,
      // run nmake -f HelloWorldps.mk in the project directory.

      #include "stdafx.h"
      #include "resource.h"
      #include 《initguid.h>
      #include "HelloWorld.h"
      #include "dlldatax.h"

      #include "HelloWorld_i.c"

      #ifdef _MERGE_PROXYSTUB
      extern "C" HINSTANCE hProxyDll;
      #endif

      CComModule _Module;

      BEGIN_OBJECT_MAP(ObjectMap)
      END_OBJECT_MAP()

      class CHelloWorldApp : public CWinApp
      {
      public:
      BSTR SayHello();

      // Overrides
      // ClassWizard generated virtual function overrides
      //{{AFX_VIRTUAL(CHelloWorldApp)
      public:
      virtual BOOL InitInstance();
      virtual int ExitInstance();
      //}}AFX_VIRTUAL

      //{{AFX_MSG(CHelloWorldApp)
      // NOTE - the ClassWizard will add and remove member functions here.
      // DO NOT EDIT what you see in these blocks of generated code !
      //}}AFX_MSG
      DECLARE_MESSAGE_MAP()
      };

      BEGIN_MESSAGE_MAP(CHelloWorldApp, CWinApp)
      //{{AFX_MSG_MAP(CHelloWorldApp)
      // NOTE - the ClassWizard will add and remove mapping macros here.
      // DO NOT EDIT what you see in these blocks of generated code!
      //}}AFX_MSG_MAP
      END_MESSAGE_MAP()

      CHelloWorldApp theApp;

      BOOL CHelloWorldApp::InitInstance()
      {
      #ifdef _MERGE_PROXYSTUB
      hProxyDll = m_hInstance;
      #endif
      _Module.Init(ObjectMap, m_hInstance, &LIBID_HELLOWORLDLib);
      return CWinApp::InitInstance();
      }

      int CHelloWorldApp::ExitInstance()
      {
      _Module.Term();
      return CWinApp::ExitInstance();
      }

      /////////////////////////////////////////////////////////////////////////////
      // Used to determine whether the DLL can be unloaded by OLE

      STDAPI DllCanUnloadNow(void)
      {
      #ifdef _MERGE_PROXYSTUB
      if (PrxDllCanUnloadNow() != S_OK)
      return S_FALSE;
      #endif
      AFX_MANAGE_STATE(AfxGetStaticModuleState());
      return (AfxDllCanUnloadNow()==S_OK && _Module.GetLockCount()==0) ? S_OK : S_FALSE;
      }

      /////////////////////////////////////////////////////////////////////////////
      // Returns a class factory to create an object of the requested type

      STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
      {
      #ifdef _MERGE_PROXYSTUB
      if (PrxDllGetClassObject(rclsid, riid, ppv) == S_OK)
      return S_OK;
      #endif
      return _Module.GetClassObject(rclsid, riid, ppv);
      }

      /////////////////////////////////////////////////////////////////////////////
      // DllRegisterServer - Adds entries to the system registry

      STDAPI DllRegisterServer(void)
      {
      #ifdef _MERGE_PROXYSTUB
      HRESULT hRes = PrxDllRegisterServer();
      if (FAILED(hRes))
      return hRes;
      #endif
      // registers object, typelib and all interfaces in typelib
      return _Module.RegisterServer(TRUE);
      }

      /////////////////////////////////////////////////////////////////////////////
      // DllUnregisterServer - Removes entries from the system registry

      STDAPI DllUnregisterServer(void)
      {
      #ifdef _MERGE_PROXYSTUB
      PrxDllUnregisterServer();
      #endif
      return _Module.UnregisterServer(TRUE);
      }



      BSTR CHelloWorldApp::SayHello()
      {
      return "Hello, world!";
      }更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • 程序员的进化-大师级
      100 Print "Hello, world!"
      • why,so short?
        • because it's Bill gates.
      • far out
    • Very good artical!
      • rolia的水真大,一会功夫就给冲的无影无踪。好半天才捞回来。。。