/******************************************************************** PROGRAM: optdlg.h PURPOSE: Dialogi-ikkunan käsittely Editor: Sirpa Pasanen 20.3.1994 *********************************************************************/ #ifndef OPTDLG_H #define OPTDLG_H #include "incwin.h" #include /* Jotta saadaan offsetof mukaan */ /* Arvotietueen muuttujan paikka ja koko */ #define P_K(ott,ot) offsetof( ott, ot ),\ sizeof((( ott *) 0)->ot ) /* Arvotietueen muuttujan nimi, paikka ja koko */ #define N_P_K(ott,ot) #ot, offsetof( ott, ot ),\ sizeof((( ott *) 0)->ot ) #ifdef __cplusplus extern "C" { #endif typedef LONG (*tWndMsgHandlerProc)(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); typedef enum { /* OptioDialogi-funktion paluuarvot */ P_ei_tot = -2, /* modeless-dial. ei vielä käsitellä*/ P_hairio, /* jokin epäonnistuminen sattunut */ P_stdPainike /* Esc tai return painettu */ /* muutoin jonkin painikkeen arvo */ } PaluuArvo; typedef enum { /* Palautettavien arvojen tietotyypit */ T_none, /* arvoa ei palauteta */ T_int, /* kokonaisluku */ T_char, /* merkki */ T_str, /* merkkijono */ T_byte /* koko. luku 0-255, char */ } TietoTyyppi; typedef enum { /* Kontrollien tyypit */ C_arbu, /* valintakytkin - auto */ C_rabu, /* valintakytkin */ C_acbo, /* valintaruutu - auto */ C_chbo, /* valintaruutu */ C_edte, /* muokattava teksti */ C_libo, /* valintalista */ C_cobo, /* yhdistelmälista */ C_pubu, /* painike */ C_stte /* tekstikenttä */ } KontrolliTyyppi; typedef enum { /* Dialogien tyypit */ D_modal, /* hallitseva, viivytetty */ D_modal_auto, /* hallitseva, välitön - EI TOT.! - */ D_modeless, /* vapaa, viivytetty - EI TOTEUT! - */ D_modeless_auto /* vapaa, välitön - EI TOTEUTETTU - */ } DialogiTyyppi; /* Optiodialogi-ikkunan kontrollikuvaus */ typedef struct { int koID1; /* ryhmän 1. kontrollin tunnus */ int koID2; /* ryhmän viim. kontr. tunnus */ KontrolliTyyppi koTyyppi; /* kontrollin tyyppi */ const char *koArvonNimi; /* arvon nimi ini-tiedostossa */ int koArvonPaikka; /* arvon paikka optiotietueella */ int koArvonKoko; /* arvon koko - " - */ TietoTyyppi koArvonTyyppi; /* arvon tyyppi - " - */ int koMaxlkm; /* listan alk. MAX-määrä tai */ /* valintaruudun tilojen lkm tai*/ /* painikkeen palauttama arvo */ char **koListaAlkio; /* listan valintalistan arvot */ } KontrolliKuvaus; /* Optiodialogifunktion parametritietue */ typedef struct { const char *odNimi; /* dialogin res.kuvauksen nimi */ DialogiTyyppi odTyyppi; /* dialogin tyyppi */ const far KontrolliKuvaus *odKuvaus; /* kontrollien kuvaustaulukko */ const char *odTiedosto; /* talletustiedoston polku */ const char *odKappale; /* ini-tiedoston kappale */ void *odArvot; /* dialogin arvotietue */ int odArvotKoko; /* arvotietueen koko tavuina */ } DialogiParam; /* Funktiot */ tWndMsgHandlerProc SetOptPreHandler(tWndMsgHandlerProc NewPreHandler); #define OPT_READ 1 #define OPT_SAVE 2 int OptSetNoMessage(int i); int OptioDialogi( HWND, const far DialogiParam * ); BOOL TalletaOptiot(const far DialogiParam * ); BOOL AlustaOptiot(const far DialogiParam * ); int OptioDialogiJaIni(HWND hWnd, const far DialogiParam *odParam ,int save); #define OptioDialogiIni(h,p) OptioDialogiJaIni(h,p,OPT_READ|OPT_SAVE) #ifdef __cplusplus } #endif #endif /* OPTDLG_H */