NTK and The NTK Project
are properties of Jn Dechereux
Home | Documentation | FAQ.
Vanilla 1.1.8 is a product of Lussumo. More Information: Documentation, Community Support.
FUNCTION SplashScreen(hmainwnd, cImgFile, nseconds) Local hbmp := NTK_ReadPictureToBmp(cImgFile) Local aBmpRect := NTK_GetBmpRect(hbmp) Local aScreen := NTK_GetClientRect( NTK_GetDesktopWindow() ) Local hsplash, nProc // Remember a splash screen window is always on top.... hsplash := NTK_CreateWindowEx( WS_EX_STATICEDGE+WS_EX_TOPMOST, "static", ; 'Splash Screen', ; WS_VISIBLE+WS_BORDER+WS_POPUP, ; (aScreen[RECT_Width] - aBmpRect[RECT_Width]) /2 , ; (aScreen[RECT_Height] - aBmpRect[RECT_Height]) /2 , ; aBmpRect[RECT_Width]+2 , ; aBmpRect[RECT_Height]+2 , ; hmainwnd , ; nil , ; // ID is not needed _GetInstance() ) nproc := NTK_SubClassWindow( hsplash, ; {|hWnd,nMsg,nwParam,nlParam| ; splashproc(nproc,hWnd,nMsg,nwParam,nlParam,hbmp,hmainwnd)} , ; {WM_PAINT,WM_DESTROY,WM_TIMER,WM_LBUTTONDOWN} ) NTK_HideCaret(hsplash) NTK_UpdateWindow(hsplash) NTK_SetTimer(hsplash,1,nseconds*1000) Return(NIL) ****** ****** ****** Static Function SplashProc(nproc, hWnd, nMsg, nwParam, nlParam, hbmp, hmainwnd) local hDc Local aPaint[PS_LENGTH] // 9 elements, see NTKGDI.CH LOCAL nRed := NTK_RGB(255,0,0) Local aRect := NTK_GetClientRect( hWnd ) Do Case Case nMsg==WM_PAINT hDc := NTK_BeginPaint(hWnd, aPaint) NTK_DrawBmp( hDC, hBmp, 0, 0, SRCCOPY ) NTK_SelectObject( hDC, NTK_GetStockObject(SYSTEM_FONT) ) NTK_SetTextColor( hDC, nRed ) NTK_SetBkMode( hDC, TRANSPARENT ) NTK_DrawText( hDC,; CHR(13)+"Wait a few seconds or Click left to bypass splash screen intro...",; aRect, DT_CENTER ) NTK_EndPaint(hWnd,aPaint) Case nMsg==WM_TIMER .or. nMsg==WM_LBUTTONDOWN // Time duration is over or user has cliked the left mouse button. // So, we have to stop the splash screen... NTK_KillTimer(hWnd,1) NTK_ShowCaret(hWnd) NTK_DestroyWindow(hWnd) Case nMsg==WM_DESTROY NTK_DeleteObject(hbmp) NTK_SelectWindow(hmainwnd) NTK_ShowWindow(hmainwnd,SW_SHOW) NTK_UpdateWindow(hmainwnd) EndCase Return NTK_CallWindowProc(nProc, hWnd, nMsg, nwParam, nlParam)
****************************************************************************** * Program : SPLASHRAD.PRG * Launch SPLASHRAD.EXE * ..........: SPLASH SCREEN demonstration based on the Minimalist Hello World * Make : MKRAD SPLASHRAD * Date : 09/08/05 * Author(s) : Jn DECHEREUX ******************************************************************************** #include "windows.ch" #include "ntkgdi.ch" #include "ntkmsg.ch" #include "ntkacc.ch" #include "ntkcmd.ch" #include "wNtk.ch" #include "wNtkKeys.ch" #define CR CHR(13) STATIC cImgFile := "musique.jpg" STATIC nDuration := 7 // In seconds FUNCTION MAIN() LOCAL hWndDemo LOCAL cWinTitle := "Splash Screen demo using NTK rad's system..." CREATE WINDOW hWndDemo ; TITLE cWinTitle ; // Minimum declaration AT 0,0 SIZE 320,200 ; ON INIT DoInit() ; ON PAINT DoRePaint() ; ON EXIT NTK_SendQuitEvent() // We do want to quit app. // You don't need to Activate the main window, the SplashScreen() function called ON INIT will to it for you! // ACTIVATE WINDOW hWndDemo NORMAL // Display the current window and its child controls AUTO HANDLE EVENTS OF WINDOW hWndDemo // Start processing background events (animate the current window) CLOSE WINDOW hWndDemo RETURN ****** ****** ****** FUNCTION DoInit(hWnd, message, nwParam, nlParam) SplashScreen(hWnd, cImgFile, nDuration) RETURN Nil ****** ****** ****** FUNCTION DOREPAINT(hWnd, message, nwParam, nlParam, hDC) //------ Old Style/fashion way to code ... more xBase-console like // Note that we can also use/mix Windows enhanced capabilities if // more power is needed... SET COLOR TO R+/W+ @ 080,015 SAY "You've seen the splash screen..."+CR+; "Now, here is Hello World!" ; SIZE 040, 280 ; INTO CONTEXT hDC RETURN(0)
******************************************************************************** * Program : SPLASHCORE.PRG * Launch SPLASHCORE.EXE * Aim : Shows how to invoke the SplashScreen() function using Windows traditional manner. * Make......: MK SPLASHCORE ******************************************************************************** #include "windows.ch" #include "ntkgdi.ch" #include "ntkimg.ch" #include "ntkmsg.ch" #include "ntkacc.ch" #include "wNtk.ch" STATIC aDemoFont1 STATIC hDemoFont1 STATIC cSplashImg := "Musique.jpg" STATIC nDuration := 10 // in seconds FUNCTION MAIN() LOCAL cMsg LOCAL NTK_aMSG := { 0,0,0,0,0,0,0 } // 7 elements, see NTKMSG.CH LOCAL hInst := NTK_GetInstance() LOCAL hIcon := NTK_LoadIcon( Nil , IDI_HAND ) // IDI_APPLICATION) LOCAL hCurs := NTK_LoadCursor( Nil , IDC_ARROW) LOCAL hBrush := NTK_GetStockObject(WHITE_BRUSH) //LTGRAY_BRUSH) LOCAL cWinTitle := "Splash demonstration and hello world!" LOCAL hWndDemo IF !NTK_RegisterClassEx( CS_HREDRAW + CS_VREDRAW,; hInst,; hIcon,; hCurs,; hBrush,; "NTKFEN",; { |hWnd, message, nwParam, nlParam|; HELLOWNDPROC(hWnd, message, nwParam, nlParam) } ) NTK_MsgBox( , "Can't register NTKFEN class..." ) RETURN Nil ENDIF hWndDemo := NTK_CreateWindowEx( WS_EX_WINDOWEDGE, "NTKFEN", cWinTitle, ; F_MIN+F_MAX+WS_SYSMENU, ; 0, 0, 640, 480 ) IF hWndDemo == 0 NTK_MsgBox( , "Can not create Hello Window..." ) RETURN Nil ENDIF aDemoFont1 := { -48,12,0,0,700, .F., .F., .F., 1, 0, 0, 0, 0, "ARIAL" } hDemoFont1 := NTK_CreateFont( aDemoFont1 ) IF hDemoFont1 == 0 NTK_MsgBox( , "Can not create DemoFont1..." ) RETURN Nil ENDIF // No need to show main window, splashscreen will do it when ended-up // NTK_ShowWindow( hWndDemo, SW_SHOW ) // NTK_UpdateWindow( hWndDemo ) // ---------------------------------- NTK's Main Events (Windows Msg) Loop DO WHILE NTK_GetMessage( NTK_aMSG, 0 ) //,hWndDemo,0,0 ) NTK_TranslateMessage( NTK_aMSG ) NTK_DispatchMessage( NTK_aMSG ) ENDDO NTK_DeleteObject( hDemoFont1 ) NTK_SelectWindow( hWndDemo ) NTK_DestroyWindow( hWndDemo ) NTK_UnregisterClass( "NTKFEN", hInst ) RETURN ****** ****** ****** FUNCTION HELLOWNDPROC( hWnd, message, nwParam, nlParam) LOCAL aPS := { 0,.T.,0,0,0,0,.T.,.T.,nil } // 9 elements, see NTKGDI.CH LOCAL hDC := 0 LOCAL nRed := NTK_RGB(255,0,0) DO CASE CASE message == WM_CREATE SplashScreen( hWnd, cSplashImg, nDuration ) RETURN(0) CASE message == WM_CHAR IF nwParam==27 // K_ESC IF NTK_MsgBox( hWnd,; "Do you really want to quit ?",; "Your Attention Please !",; MB_OKCANCEL+MB_ICONQUESTION ) == IDOK NTK_PostQuitMessage(0) ENDIF ENDIF CASE message == WM_RBUTTONDOWN IF NTK_MsgBox( hWnd,; "Do you really want to quit ?",; "Your Attention Please !",; MB_OKCANCEL+MB_ICONQUESTION ) == IDOK NTK_PostQuitMessage(0) ENDIF CASE message == WM_SYSCOMMAND IF nwParam == SC_CLOSE // system menu double click, or Alt-F4 IF NTK_MsgBox( hWnd,; "Do you really want to quit ?",; "Your Attention Please !",; MB_OKCANCEL+MB_ICONQUESTION ) == IDOK NTK_PostQuitMessage(0) ENDIF RETURN(0) ENDIF CASE message == WM_PAINT hDC := NTK_BEGINPAINT( hWnd, aPS ) NTK_TextOut( hDC, 100, 400, "Press Esc or hit right mouse button to quit..." ) NTK_DrawText( hDC,; "This sample has shown you a splash screen before this main window takes place.",; {0,50,200,350}, DT_CENTER ) NTK_SelectObject( hDC, hDemoFont1 ) NTK_SetTextColor( hDC, nRed ) NTK_SetBkMode( hDC, TRANSPARENT ) NTK_DrawText( hDC,; "Yet another Helloworld with splash screen!",; {250,100,450,300}, DT_CENTER ) NTK_ENDPAINT( hWnd, aPS ) CASE message == WM_DESTROY NTK_PostQuitMessage(0) RETURN(0) ENDCASE RETURN( NTK_DEFWNDPROC(hWnd, message, nwParam, nlParam) )
1 to 3 of 3