If we had to add a method for every third party control we will end with a very bloated application. There is a method called AddControl that can be used to add any control and which is called by the other Addxxx methods to do the work.
See how easy is to use it:
#COMPILE EXE
#DIM ALL
%USEMACROS = 1 ' // Use macros
#INCLUDE ONCE "CWindow.inc" ' // CWindow class
#INCLUDE ONCE "winctrl.inc" ' // Window wrapper functions
%IDC_SCI = 101
' ########################################################################################
' Main
' ########################################################################################
FUNCTION WinMain (BYVAL hInstance AS DWORD, BYVAL hPrevInstance AS DWORD, BYVAL lpszCmdLine AS ASCIIZ PTR, BYVAL nCmdShow AS LONG) AS LONG
' // Create an instance of the class
LOCAL pWindow AS IWindow
pWindow = CLASS "CWindow"
IF ISNOTHING(pWindow) THEN EXIT FUNCTION
' // Create the main window
LOCAL hwnd AS DWORD
hwnd = pWindow.CreateWindow(%NULL, "SDK Window", 0, 0, 500, 350, -1, -1, CODEPTR(WindowProc))
Window_Center hwnd
' // Add a scintilla control
LOCAL hLib AS DWORD
LOCAL hSci AS DWORD
hLib = LoadLibrary("SCILEXER.DLL")
IF hLib THEN
hSci = pWindow.AddControl("Scintilla", hwnd, %IDC_SCI, "", 50, 50, 380, 200, _
%WS_CHILD OR %WS_VISIBLE OR %WS_TABSTOP OR %WS_BORDER, 0)
END IF
' // Default message pump (you can replace it with your own)
pWindow.DoEvents
IF hLib THEN FreeLibrary hLib
END FUNCTION
' ########################################################################################
' ========================================================================================
' Main callback function.
' ========================================================================================
FUNCTION WindowProc (BYVAL hwnd AS DWORD, BYVAL uMsg AS DWORD, BYVAL wParam AS DWORD, BYVAL lParam AS LONG) AS LONG
SELECT CASE uMsg
CASE %WM_COMMAND
SELECT CASE LO(WORD, wParam)
CASE %IDCANCEL
IF HI(WORD, wParam) = %BN_CLICKED THEN
SendMessage hwnd, %WM_CLOSE, 0, 0
EXIT FUNCTION
END IF
END SELECT
CASE %WM_DESTROY
' // Close the main window
PostQuitMessage 0
EXIT FUNCTION
END SELECT
FUNCTION = DefWindowProc(hwnd, uMsg, wParam, lParam)
END FUNCTION
' ========================================================================================