******************** * C4W2NTK TUTORIAL ******************** * This is a NTK emulation of the original C4W contribution named: * \CLIP4WIN\SOURCE\CONTRIB\4DIALOG.PRG * * * The NTK make procedure is: * MKRAD 4DIALOG * * * I can't believe it's Clip4Win! * Powered by NTK - http://www.ntkproject.com ******************** ************************************************** ** 4DIALOG.PRG * ** CLIPPER POUR WINDOW * ** Exemple de gestion de fenetre de dialogue * ** avec ressource * ** utilise 4DIALOG.RES * ** Auteur: Paul Peyriller * ************************************************** // NTK: deprecated /* #define WIN_WANT_ALL #define WIN_WANT_EN #define WIN_WANT_LBS #define WIN_WANT_CLIPBOARD */ #include "windows.ch" // jnd: just add that for NTK #include "ntkmsg.ch" // Window message def. #include "ntkmenus.ch" // NTK menu def. #include "ntkgdi.ch" // NTK gdi & font def. #include "ntkcmd.ch" // NTK rad msg and cmd def. (i.e. @...Say ) #include "c4w2ntk.ch" // C4W msg def and NTK translations #define CR chr(13) static cAppName := "Dialogs" static hWnd static cText := "" static cFontName := "MS Sans Serif" static nPointSize := 8 //------------------- FUNCTION main() local hMenu REQUEST HB_GT_GUI_DEFAULT // for [xHarbour] version > 0.99.7. We want to hear tone() set scoreboard off //NTK: SetColor("n/w,+w/n,+w,+w,+w/n") hWnd = WinSetup(cAppName, "Clip-4-Win Dialogue") SetColor("n/w,+w/n,+w,+w,+w/n") // NTK: Must be declared here. Otherwise, it just invokes the xHrb console function which does nothing in GUI environment. hMenu = MenuSetup() //affichage du menu HideCaret(hWnd) //cache le curseur gestev() //gestion evenement return nil ************************ function gestev //GESTION EVENEMENTIELLE local nevent do while .t. do while (nEvent := ChkEvent()) == EVENT_NONE enddo * HandleEvent(nEvent) if nEvent == EVENT_CLOSE .OR. nEvent == EVENT_QUIT sortie() endif enddo return nil ********************************* function sortie local fcour:=_lasthwnd() //fenetre courante if fcour==Hwnd //si courante=fenetre principale tone(1400,1) DestroyWindow(hWnd) //ferme fenetre principale unregisterclass(cappname) quit //quitte l'application else tone(4000,2) Destroywindow(fcour) //ferme fenetre fille setfocus(hwnd) //revient a la fenetre principale endif return nil *********************** FUNCTION MenuSetup() //affichage du menu local hWnd := SelectWindow(), hMenu, hPopupMenu if (hMenu := GetMenu(hWnd)) != nil //fermer menu s'il existe DestroyMenu(hMenu) endif hMenu = CreateMenu() hPopupMenu = CreatePopupMenu() AppendMenu(hPopupMenu, "exit", MF_ENABLED + MF_STRING, "E&xit", {|c| sortie() }) AppendMenu(hMenu, "file", MF_ENABLED + MF_POPUP, "&File", hPopupMenu) hPopupMenu = CreatePopupMenu() AppendMenu(hPopupMenu, "resmodal", MF_ENABLED + MF_STRING, "&Resource", {|| RModeless()}) AppendMenu(hMenu, "modal", MF_ENABLED + MF_POPUP, "&Modeless", hPopupMenu) hPopupMenu = CreatePopupMenu() SetMenu(hWnd, hMenu) return hMenu ******************************************* ******************************************* ******************************************* ******************************************* ******************************************* ******************************************* ******************************************* ******************************************* ******************************************* /*DEFINITION DES BOUTONS INCLUS DANS WINDOWS.CH #define IDOK 1 #define IDCANCEL 2 #define IDABORT 3 #define IDRETRY 4 #define IDIGNORE 5 #define IDYES 6 #define IDNO 7 */ ******************************************* /*RESSOURCE CONTENU DE 4DIALOG.RC DLG DIALOG 6, 18, 160, 100 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "CLIENT" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "&Sauver", 1, 23, 73, 40, 14 PUSHBUTTON "&Sortie", 2, 76, 73, 40, 14 LTEXT "Nom", -1, 22, 14, 25, 8 LTEXT "Ville", -1, 23, 32, 16, 8 LTEXT "Solde", -1, 23, 50, 28, 8 CONTROL "", 5000, "EDIT", ES_LEFT | ES_AUTOHSCROLL | ES_UPPERCASE | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 76, 14, 32, 12 CONTROL "", 5001, "EDIT", ES_LEFT | ES_UPPERCASE | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 76, 30, 63, 12 CONTROL "", 5002, "EDIT", ES_LEFT | ES_UPPERCASE | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 76, 46, 32, 12 END Last change: XXX 25 Jan 94 7:38 am */ *************************************** //1- Affiche la fenetre de dialogue "dlg" include dans 4DIALOG.RES //2- place le code de gestion de cette fenetre dans le gestionnaire d'‚venement FUNCTION RModeless() local i i = DialogBox( , "dlg", ,{|hDlg, msg, wparam, lparam| ; ResDlgMdss(hDlg, msg, wparam, lparam)}) return nil ******************************* // fonction de gestion de la fenetre de dialogue FUNCTION ResDlgMdss(hWndDlg, nMsg, nwParam, nlParam)//, nVarRet) // Message re‡u de windows //hWndDlg Handle-descripteur de la fenetre //nMsg Numero de message //nwParam identificateur du bouton de controle //nlParam handle fentre fille+code de notification DO CASE CASE nmsg== WM_INITDIALOG//INITIALISATION //Message recu d‚s que la fenetre est affich‚e setdlgitem(hwnddlg,5000,"DUPOND") //ENVOI DES VALEURS AUX ZONES setdlgitem(hwnddlg,5001,"TOULOUSE") setdlgitem(hwnddlg,5002,"1000000") CASE nmsg== WM_COMMAND //message recu d‚s que l'on a cliqu‚ dans un bouton de controle (EDIT,BUTTON,LISTBOX, ...) DO CASE case nwparam==2 //BOUTON SORTIE destroywindow(Hwnddlg,nwparam) //ferme fenetre enablewindow(hWnd, .T.) setfocus(hWnd) case nwparam==1 //BOUTON SAUVER mnom:=getdlgitmtext(hwnddlg,5000) //récupere la valeur de la zone mville:=getdlgitmtext(hwnddlg,5001) msolde:=val(getdlgitmtext(hwnddlg,5002)) tone(5000,1) endcase ENDCASE return 0 **************************