/***************************************************************************
About Box for INI Copier
****************************************************************************/
#define INCL_WINMENUS
#define INCL_WINFRAMEMGR
#include "global.h"
void SetSysMenu(HWND hDlg);
/* Questa funzione gestisce i messaggi della finestra About */
#if (defined(__IBMC__) || defined(__IBMCPP__))
/* Questa #pragma serve per esportare i simboli con il VisualAge */
#pragma export(AboutWndProc,"AboutWndProc",100)
#endif
LINKAGE MRESULT EXPENTRY AboutWndProc(HWND hDlg,
ULONG msg,
MPARAM mParam1,
MPARAM mParam2)
{
switch(msg)
{
/* Nell'inizializzazione della finestra modifico il menu` di sistema */
case WM_INITDLG:
SetSysMenu(hDlg);
break;
/* Al primo comando che arriva chiudo la finestra */
case WM_COMMAND:
WinDismissDlg(hDlg,TRUE);
break;
/* default meassage processing */
default:
return WinDefDlgProc(hDlg,msg,mParam1,mParam2);
break;
}
return (MRESULT)FALSE;
}
/* Modifica il menu` di sistema in modo che rimangano solo le voci 'Move' e
'Close' */
void SetSysMenu(HWND hDlg)
{
HWND hSysMenu; /* handle del menu` di sistema */
MENUITEM mItem; /* Struttura relativa ad una voce del menu */
ULONG Pos; /* Posizione nel menu */
MRESULT Id; /* ID della voce nel menu` */
SHORT cItems; /* Numero di voci nel menu */
/* ottengo l'handle del menu` di sistema della dialog window hDlg */
hSysMenu=WinWindowFromID(hDlg,FID_SYSMENU);
/* ottengo la prima voce del menu` per avere l'handle del menu` a tendina */
WinSendMsg(hSysMenu,MM_QUERYITEM,MPFROM2SHORT(SC_SYSMENU,FALSE),
MPFROMP(&mItem));
Pos=0;
/* Chiedo quante voci ci sono nella tendina */
cItems=(SHORT)WinSendMsg(mItem.hwndSubMenu,MM_QUERYITEMCOUNT,
NULL,NULL);
/* Itero su tutte le voci del menu` cancellandole tutte eccetto 'Move' e
'Close' */
while(cItems--)
{
Id=WinSendMsg(mItem.hwndSubMenu,MM_ITEMIDFROMPOSITION,MPFROMLONG(Pos),
NULL);
switch(SHORT1FROMMR(Id))
{
case SC_MOVE:
case SC_CLOSE:
Pos++;
break;
default:
WinSendMsg(mItem.hwndSubMenu,MM_DELETEITEM,
MPFROM2SHORT((USHORT)Id,TRUE),NULL);
}
}
}
/* fine di about.c */
Last modified 20-11-96 |