Guys, I'm trying to make a way to be able to do this:
SHOWDDT hDlg&, CODEPTR(dlgProc)
The key is that I don't want any global variables, so
I use a function with STATIC vars to keep track of all
the hwnd's and DDT CodePtr's. However, when I run this,
it seems as if DDT is getting any of the messages.
Here is what I have so far.
------------------
-Greg
[This message has been edited by Gregery D Engle (edited July 20, 2001).]
SHOWDDT hDlg&, CODEPTR(dlgProc)
The key is that I don't want any global variables, so
I use a function with STATIC vars to keep track of all
the hwnd's and DDT CodePtr's. However, when I run this,
it seems as if DDT is getting any of the messages.
Here is what I have so far.
Code:
#COMPILE EXE #INCLUDE "win32api.inc" %DEBUGMODE = 1 TYPE SubClassStruct hWnd AS LONG lpPrevWndFunc AS LONG END TYPE DECLARE CALLBACK FUNCTION DlgProc() SUB DEBUG_PRINT (SOut AS STRING) #IF %DEBUGMODE STATIC hConsole AS LONG, cWritten AS LONG IF hConsole = 0 THEN AllocConsole: hConsole = GetStdHandle(-11&) WriteConsole hConsole, BYCOPY sOut + $CrLf, LEN(sOut) + 2, cWritten, BYVAL 0& #ENDIF END SUB SUB CodePTRList(hWnd&, lCodePTR&) STATIC SubClass() AS SubClassStruct STATIC lDialogs& DEBUG_PRINT "Number of dialogs: " & STR$(lDialogs&) IF lDialogs& = 0 THEN REDIM SubClass(0 TO 99) END IF FOR lCounter& = 0 TO lDialogs& IF SubClass(lCounter&).hWnd& = hWnd& THEN lCodePTR& = SubClass(lCounter&).lpPrevWndFunc& EXIT SUB END IF NEXT INCR lDialogs& SubClass(lDialogs&).hWnd& = hWnd& SubClass(lDialogs&).lpPrevWndFunc& = lCodePTR& END SUB FUNCTION SubClassProc(BYVAL hWnd&, BYVAL wMsg&, BYVAL wParam&, BYVAL lParam&) AS LONG CodePTRList hWnd&, OldProc& DEBUG_PRINT STR$(hWnd&) & " " & STR$(OldProc&) a& = CallWindowProc(OldProc&, hWnd&, wMsg&, wParam&, lParam&) END FUNCTION CALLBACK FUNCTION DlgProc() AS LONG DEBUG_PRINT "DLGPROC..." & STR$(CBMSG) END FUNCTION FUNCTION PBMAIN() AS LONG DIALOG NEW 0, "This is a Test",,, 160, 50, Style&, eStyle& TO hDlg& 'CALL DWORD CODEPTR(DlgProc()) CodePTRList hDlg&, SetWindowLong(hDlg&, %GWL_WNDPROC, CODEPTR(SubClassProc)) DIALOG SHOW MODELESS hDlg&, CALL DlgProc() DO DIALOG DOEVENTS LOOP END FUNCTION
------------------
-Greg
[This message has been edited by Gregery D Engle (edited July 20, 2001).]
Comment