home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progc / c_all592.arj / TI866.ASC < prev    next >
Text File  |  1992-04-16  |  1KB  |  67 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   PRODUCT  :  C++                                    NUMBER  :  866
  9.   VERSION  :  All
  10.        OS  :  WIN
  11.      DATE  :  April 16, 1992                           PAGE  :  1/1
  12.  
  13.     TITLE  :  Using The Windows API Function MakeProcInstance
  14.  
  15.  
  16.  
  17.  
  18.   I keep getting a type mismatch error from the compiler when I
  19.   pass my function pointer to MakeProcInstance, and a type mismatch
  20.   error when I assign my function's return value to another
  21.   function pointer.  Why?
  22.  
  23.   Unless two functions take the same parameters, they are
  24.   considered to be of different types.  Thus, if I declare a
  25.   DlgProc like so:
  26.  
  27.        int FAR PASCAL _export DlgProc(HWND, WORD, WORD, DWORD);
  28.  
  29.   I will get a type mismatch when I do:
  30.  
  31.        MakeProcInstance(DlgProc, hInstance);
  32.  
  33.   because MakeProcInstance expects a FARPROC for its first
  34.   parameter, which is declared to be a
  35.  
  36.        typedef int (FAR PASCAL *FARPROC)();
  37.  
  38.   To suppress this error, do this:
  39.  
  40.        MakeProcInstance((FARPROC)DlgProc, hInstance);
  41.  
  42.   That is typecast the function pointer you're passing to
  43.   MakeProcInstance to be the type it expects.  Similarly, since
  44.   MakeProcInstance returns a FARPROC, you will get an error if you
  45.   assign its return value into other than a FARPROC.  You would
  46.   need to either make the variable your assigning
  47.   MakeProcInstance's return value into a FARPROC, or typecast the
  48.   return value to the type of your variable.
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.