API之DLL

 

一个工作空间可以包含一个或多个项目

实例 APIDDL001

#include <windows.h>

#include "DLL1.h"

 

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

                    PSTR szCmdLine, int iCmdShow)

{

     static TCHAR szAppName[] = TEXT ("StrProg") ;

     HWND         hwnd ;

     MSG          msg ;

     WNDCLASS     wndclass ;

 

     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;

     wndclass.lpfnWndProc   = WndProc ;

     wndclass.cbClsExtra    = 0 ;

     wndclass.cbWndExtra    = 0 ;

     wndclass.hInstance     = hInstance ;

     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;

     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;

     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

     wndclass.lpszMenuName  = NULL ;

     wndclass.lpszClassName = szAppName ;

     

     if (!RegisterClass (&wndclass))

     {

          MessageBox (NULL, TEXT ("This program requires Windows NT!"),

                      szAppName, MB_ICONERROR) ;

          return 0 ;

     }

     

     hwnd = CreateWindow (szAppName, TEXT ("DLL Demonstration Program"),

                          WS_OVERLAPPEDWINDOW,

                          CW_USEDEFAULT, CW_USEDEFAULT,

                          CW_USEDEFAULT, CW_USEDEFAULT,

                          NULL, NULL, hInstance, NULL) ;

     

     ShowWindow (hwnd, iCmdShow) ;

     UpdateWindow (hwnd) ;

     

     while (GetMessage (&msg, NULL, 0, 0))

     {

          TranslateMessage (&msg) ;

          DispatchMessage (&msg) ;

     }

     return msg.wParam ;

}

 

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

     HDC         hdc ;

     PAINTSTRUCT ps ;

     RECT        rect ;

     

     switch (message)

     {

     case WM_PAINT:

 

          hdc = BeginPaint (hwnd, &ps) ;

    

          EndPaint (hwnd, &ps) ;

 

          return 0 ;

      

  case WM_LBUTTONDOWN :

         

     hdc =GetDC(hwnd ) ;

   

           drawShap(hdc ,100 ,100 ) ;

 

     ReleaseDC(hwnd ,hdc ) ;

    return 0 ;

 

     case WM_DESTROY:

          PostQuitMessage (0) ;

          return 0 ;

     }

     return DefWindowProc (hwnd, message, wParam, lParam) ;

}

 

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//DLL1.H

#define  EXPORT __declspec (dllexport)

 

EXPORT BOOL  CALLBACK drawShap(HDC ,int ,int ) ;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// DLL1.CPP

#include <windows.h>

#include "DLL1.h"

 

int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)

{

     return TRUE ;

}

 

EXPORT BOOL  CALLBACK   drawShap(HDC hdc, int ix ,int iy ) 

 {

  MoveToEx(hdc , 0 ,0 ,NULL) ;

  

  LineTo(hdc , ix ,iy );

 

  return TRUE ;

 }

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

你可能感兴趣的:(API之DLL)