home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.wwiv.com
/
ftp.wwiv.com.zip
/
ftp.wwiv.com
/
pub
/
MISC
/
LSW270SR.ZIP
/
settings.c
< prev
next >
Wrap
Text File
|
2004-04-11
|
37KB
|
1,002 lines
/*
* Copyright (C) 1997-2004 Andrei Los.
* This file is part of the lSwitcher source package.
* lSwitcher is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
* by the Free Software Foundation, in version 2 as it comes in the
* "COPYING" file of the lSwitcher main distribution.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <string.h>
#include <stdio.h>
#include "prmdlg.h"
#include "settings.h"
#include "lswitch.h"
#include "msg.h"
#include "common.h"
#include "taskbar.h"
#define BKM_SETNOTEBOOKBUTTONS 0x0375 /* Set common pushbuttons */
#define STRLISTDIVIDER "}{!@$#%^&*]["
VOID GetIniFileName(UCHAR *ucFName,USHORT usLen)
{ PPIB ppib;
PTIB ptib;
UCHAR *p;
SHORT k;
#ifndef XWORKPLACE
DosGetInfoBlocks(&ptib,&ppib);
if ((p=strstr(&ppib->pib_pchcmd[strlen(ppib->pib_pchcmd)+1],"/i"))!=NULL ||
(p=strstr(&ppib->pib_pchcmd[strlen(ppib->pib_pchcmd)+1],"/I"))!=NULL) {
GetStartupDir(ucFName,usLen);
for (k = 2; k < strlen(p) && p[k]==' '; k++); // get rid of leading spaces
strncat(ucFName,&p[k],usLen-strlen(ucFName)-1);
} else
strncpy(ucFName,"",usLen);
#else
GetStartupDir(ucFName,usLen);
strncat(ucFName,DEFINIFNAME,usLen-strlen(ucFName)-1);
#endif
}
BOOL CheckSettings(LSWSETTINGS *pSettings)
{
return (pSettings->ucVerMajor >= LASTINIVERMAJOROK &&
pSettings->ucVerMinor >= LASTINIVERMINOROK &&
pSettings->ucRevision >= LASTINIREVISIONOK);
}
VOID InitSettings(LSWSETTINGS *pSettings)
{
memset(pSettings, 0, sizeof(LSWSETTINGS));
pSettings->ucVerMajor = VERSIONMAJOR;
pSettings->ucVerMinor = VERSIONMINOR;
pSettings->ucRevision = REVISION;
pSettings->bShowHidden = pSettings->bShowHiddenTskBar = TRUE;
pSettings->bShowViewer = pSettings->bShowViewerTskBar = TRUE;
pSettings->bPMSwitcher = TRUE;
pSettings->bShowInWinList = TRUE;
pSettings->bShowHints = TRUE;
pSettings->lBackColor = DEFBACKRGBCOLOR;
pSettings->lRaisedFrameColor = DEFRAISEDFRAMECOLOR;
pSettings->lSunkenFrameColor = DEFSUNKENFRAMECOLOR;
pSettings->lTitleRGBCol = DEFTITLERGBCOLOR;
pSettings->lHintsRGBCol = DEFHINTSRGBCOLOR;
pSettings->lBubbleRGBCol = RGB_WHITE;
pSettings->lBubbleTextRGBCol = RGB_BLUE/2; //dark blue
pSettings->bTaskBarOn = TRUE;
pSettings->bTaskBarAlwaysVisible = TRUE;
pSettings->bReduceDsk = TRUE;
pSettings->bFlatButtons = TRUE;
pSettings->bAllowResize = TRUE;
pSettings->b3DTaskBar = TRUE;
pSettings->lTskBarRGBCol3D = DEFTSKBARRGBCOL3D;
pSettings->lNormalBtnRGBCol3D = pSettings->lNormalHiddenBtnRGBCol3D = NORMALBTNRGBCOL3D;
pSettings->lActiveBtnRGBCol3D = pSettings->lActiveHiddenBtnRGBCol3D = ACTIVEBTNRGBCOL3D;
pSettings->lNormalBtnTitleRGBCol3D = NORMALBTNTITLERGBCOL3D;
pSettings->lActiveBtnTitleRGBCol3D = ACTIVEBTNTITLERGBCOL3D;
pSettings->lNormalHiddenBtnTitleRGBCol3D = pSettings->lActiveHiddenBtnTitleRGBCol3D = HIDDENBTNTITLERGBCOL3D;
pSettings->lTskBarRGBCol = DEFTSKBARRGBCOL;
pSettings->lNormalBtnRGBCol = pSettings->lNormalHiddenBtnRGBCol = NORMALBTNRGBCOL;
pSettings->lActiveBtnRGBCol = pSettings->lActiveHiddenBtnRGBCol = ACTIVEBTNRGBCOL;
pSettings->lNormalBtnTitleRGBCol = NORMALBTNTITLERGBCOL;
pSettings->lActiveBtnTitleRGBCol = ACTIVEBTNTITLERGBCOL;
pSettings->lNormalHiddenBtnTitleRGBCol = pSettings->lActiveHiddenBtnTitleRGBCol = HIDDENBTNTITLERGBCOL;
pSettings->sTskBarX = pSettings->sTskBarY = -TSKBARFRAMEWIDTH;
pSettings->sTskBarCX = WinQuerySysValue(HWND_DESKTOP,SV_CXSCREEN)+2*TSKBARFRAMEWIDTH;
pSettings->sTskBarCY = WinQuerySysValue(HWND_DESKTOP,SV_CYICON)/2+4+2*BUTTONBORDERWIDTH+2+2*TSKBARFRAMEWIDTH;
pSettings->usMaxBtnWid = MAXBUTTONWIDTH;
pSettings->ucSettingsKey = 'S'; pSettings->ucSettingsScan = SCAN_SETTINGS;
pSettings->usSwitchMEvent = WM_BUTTON1CLICK;
pSettings->usMinMEvent = WM_BUTTON1CLICK;
pSettings->usCloseMEvent = WM_CHORD;
pSettings->usScrollDiv = 1;
pSettings->ucLanguage = ENGLISH;
strncpy(pSettings->ucTitleFont,DEFTITLEFONT3,sizeof(pSettings->ucTitleFont));
strncpy(pSettings->ucHintsFont,DEFHINTSFONT,sizeof(pSettings->ucHintsFont));
strncpy(pSettings->ucButtonFont,DEFTITLEFONT3,sizeof(pSettings->ucButtonFont));
}
USHORT LoadSettings(HAB hab,PSZ pszFName,LSWSETTINGS *pSettings)
{ ULONG ulCbBuf,k,ulIndex;
HINI hini;
BOOL rc;
UCHAR *pBuf;
ENTRYNAME SkipStr;
SKIPLIST *pSkipList;
if (strlen(pszFName) != 0) {
if ((hini=PrfOpenProfile(hab,pszFName))==NULLHANDLE) {
return 1;
}
} else
hini=HINI_USERPROFILE;
ulCbBuf = sizeof(LSWSETTINGS)+2*MAXITEMS*sizeof(ENTRYNAME)+sizeof(STRLISTDIVIDER);
if ((pBuf = calloc(1,ulCbBuf))==NULL) return 3;
rc = PrfQueryProfileData(hini, PRF_APPNAME, PRF_SETTINGS, pBuf, &ulCbBuf);
if (pszFName != NULL) PrfCloseProfile(hini);
if (!rc) return 2;
ulIndex = sizeof(LSWSETTINGS)-2*sizeof(pSettings->SkipListPopup);
memcpy(pSettings,pBuf,ulIndex);
k=0; pSkipList = &pSettings->SkipListPopup;
while (ulIndex < ulCbBuf) {
if (sscanf(&pBuf[ulIndex],"%[^\0]",SkipStr)!=1 || strlen(SkipStr)==0) break;
ulIndex += strlen(SkipStr)+1;
if (strcmp(SkipStr,STRLISTDIVIDER)==0) {
k = 0; pSkipList = &pSettings->SkipListTskBar;
continue;
}
(*pSkipList)[k++] = strdup(SkipStr);
}
free(pBuf);
return 0;
}
USHORT SaveSettings(HAB hab,PSZ pszFName,LSWSETTINGS *pSettings)
{ USHORT k;
HINI hini;
BOOL rc;
UCHAR *pBuf;
ULONG ulCbBuf,ulIndex;
if (strlen(pszFName) != 0) {
if ((hini=PrfOpenProfile(hab,pszFName))==NULLHANDLE)
return 1;
} else
hini=HINI_USERPROFILE;
ulCbBuf = sizeof(LSWSETTINGS)+2*MAXITEMS*sizeof(ENTRYNAME)+sizeof(STRLISTDIVIDER);
if ((pBuf = calloc(1,ulCbBuf))==NULL) return 3;
ulIndex = sizeof(LSWSETTINGS)-2*sizeof(pSettings->SkipListPopup);
memcpy(pBuf,pSettings,ulIndex);
for (k=0; pSettings->SkipListPopup[k]!=NULL && k<MAXITEMS; k++) {
strcat(&pBuf[ulIndex],pSettings->SkipListPopup[k]);
ulIndex += strlen(pSettings->SkipListPopup[k])+1;
}
if (pSettings->SkipListTskBar[0]!=NULL) {
strcat(&pBuf[ulIndex],STRLISTDIVIDER);
ulIndex += strlen(STRLISTDIVIDER)+1;
for (k=0; pSettings->SkipListTskBar[k]!=NULL && k < MAXITEMS; k++) {
strcat(&pBuf[ulIndex],pSettings->SkipListTskBar[k]);
ulIndex += strlen(pSettings->SkipListTskBar[k])+1;
}
}
rc = PrfWriteProfileData(hini, PRF_APPNAME, PRF_SETTINGS, pBuf, ulIndex);
if (pszFName != NULL)
PrfCloseProfile(hini);
free(pBuf);
if (rc)
return 0;
else
return 2;
}
USHORT DeleteSettings(HAB hab,PSZ pszFName)
{ HINI hini;
if (strlen(pszFName) != 0) {
if ((hini=PrfOpenProfile(hab,pszFName))==NULLHANDLE)
return 1;
} else
hini = HINI_USERPROFILE;
PrfWriteProfileData(hini, PRF_APPNAME, NULL, NULL, 0);
if (pszFName != NULL)
PrfCloseProfile(hini);
return 0;
}
VOID EditSettings(LSWDATA *plswData)
{
if (!plswData->bSettingsDlgOn)
plswData->hwndParamDlg = WinLoadDlg(HWND_DESKTOP, NULLHANDLE, ParmDlgProc,
plswData->hmodRes, DLG_PARAMS, plswData);
if (plswData->hwndParamDlg != NULLHANDLE)
WinSetWindowPos(plswData->hwndParamDlg,HWND_TOP,0,0,0,0,SWP_SHOW | SWP_ZORDER | SWP_ACTIVATE);
}
MRESULT EXPENTRY PopupDlgProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{ static BOOL bInit = FALSE;
LSWDATA *plswData;
plswData = WinQueryWindowPtr(hwnd,0);
switch (msg) {
case WM_INITDLG: {
bInit = TRUE;
SetControlsFont(hwnd,FALSE);
DosGetNamedSharedMem((PVOID*)&plswData,SHAREMEM_NAME,PAG_READ | PAG_WRITE);
WinSetWindowPtr(hwnd,0,plswData);
DosFreeMem(plswData);
WinCheckButton(hwnd, plswData->Settings.ucPopupHotKey==0?RAD_ALTTAB:
plswData->Settings.ucPopupHotKey==1?RAD_CTRLTAB:RAD_WINTAB, TRUE);
WinCheckButton(hwnd, CHK_PMSWITCHER, plswData->Settings.bPMSwitcher);
WinCheckButton(hwnd, CHK_PMPOPUPINFS, plswData->Settings.bPMPopupInFS);
WinCheckButton(hwnd, CHK_SCROLL, plswData->Settings.bScrollItems);
WinCheckButton(hwnd, CHK_HINTS, plswData->Settings.bShowHints);
WinCheckButton(hwnd, CHK_STICKY, plswData->Settings.bStickyPopup);
WinEnableControl(hwnd, CHK_PMSWITCHER,(plswData->Settings.ucPopupHotKey==0));
WinEnableControl(hwnd, CHK_SCROLL,!plswData->Settings.bOldPopup);
WinSendDlgItemMsg(hwnd,SPIN_SCROLLDIV,SPBM_SETLIMITS,MPFROMLONG(9),MPFROMLONG(1));
WinSendDlgItemMsg(hwnd,SPIN_SCROLLDIV,SPBM_SETTEXTLIMIT,MPFROMSHORT(1),0);
WinSendDlgItemMsg(hwnd,SPIN_SCROLLDIV,SPBM_SETCURRENTVALUE,MPFROMLONG(plswData->Settings.usScrollDiv),0);
bInit = FALSE;
return (MRESULT)TRUE;
}
case WM_CONTROL: {
BOOL bValue;
if (bInit) break;
bValue = WinQueryButtonCheckstate(hwnd, SHORT1FROMMP(mp1));
switch (SHORT1FROMMP(mp1)) {
case SPIN_SCROLLDIV:
if (SHORT2FROMMP(mp1)==SPBN_CHANGE) {
LONG ulScrollDiv;
WinSendDlgItemMsg(hwnd,SPIN_SCROLLDIV,SPBM_QUERYVALUE,MPFROMP(&ulScrollDiv),MPFROM2SHORT(0,SPBQ_ALWAYSUPDATE));
plswData->Settings.usScrollDiv=(USHORT)ulScrollDiv;
}
break;
case RAD_ALTTAB:
case RAD_CTRLTAB:
case RAD_WINTAB: {
ULONG ulPostCount;
if (WinQueryButtonCheckstate(hwnd, RAD_ALTTAB)) plswData->Settings.ucPopupHotKey=0;
else if (WinQueryButtonCheckstate(hwnd, RAD_CTRLTAB)) plswData->Settings.ucPopupHotKey=1;
else plswData->Settings.ucPopupHotKey=2;
WinEnableControl(hwnd,CHK_PMSWITCHER,(plswData->Settings.ucPopupHotKey==0));
if (plswData->Settings.ucPopupHotKey==0) {
DosResetEventSem(plswData->hevCtrlTab,&ulPostCount);
DosResetEventSem(plswData->hevCtrlTab,&ulPostCount);
} else if (plswData->Settings.ucPopupHotKey==1) {
DosPostEventSem(plswData->hevCtrlTab);
DosResetEventSem(plswData->hevWinTab,&ulPostCount);
} else {
DosPostEventSem(plswData->hevWinTab);
DosResetEventSem(plswData->hevCtrlTab,&ulPostCount);
}
break;
}
case CHK_PMSWITCHER: plswData->Settings.bPMSwitcher = bValue; break;
case CHK_SCROLL: plswData->Settings.bScrollItems = bValue; break;
case CHK_HINTS: plswData->Settings.bShowHints = bValue; break;
case CHK_SWDESKTOP: plswData->Settings.bDesktopMinimizes = bValue; break;
case CHK_PMPOPUPINFS: plswData->Settings.bPMPopupInFS = bValue; break;
case CHK_STICKY: plswData->Settings.bStickyPopup = bValue; break;
}
break;
}
default:
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
return 0;
}
MRESULT EXPENTRY ListDlgProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{ static BOOL bTskBar, bInit=FALSE;
LSWDATA *plswData;
bTskBar = (WinQueryWindowUShort(hwnd,QWS_ID)==DLG_EXCLUDETSKBAR);
plswData = WinQueryWindowPtr(hwnd,0);
switch (msg) {
case WM_INITDLG: {
PSWBLOCK pswblk;
ULONG ulItems,k;
SKIPLIST *pSkipList;
bInit = TRUE;
SetControlsFont(hwnd,FALSE);
DosGetNamedSharedMem((PVOID*)&plswData,SHAREMEM_NAME,PAG_READ | PAG_WRITE);
WinSetWindowPtr(hwnd,0,plswData);
DosFreeMem(plswData);
bTskBar = PVOIDFROMMP(mp2)!=NULL;
pSkipList = bTskBar?&plswData->Settings.SkipListTskBar:&plswData->Settings.SkipListPopup;
if (bTskBar) {
WinDestroyWindow(WinWindowFromID(hwnd, CHK_SHOWVIEWER));
WinDestroyWindow(WinWindowFromID(hwnd, CHK_SHOWHIDDEN));
WinDestroyWindow(WinWindowFromID(hwnd, GRP_MINHIDE));
} else {
WinCheckButton(hwnd, CHK_SHOWVIEWER, bTskBar?!plswData->Settings.bShowViewerTskBar:!plswData->Settings.bShowViewer);
WinCheckButton(hwnd, CHK_SHOWHIDDEN, bTskBar?!plswData->Settings.bShowHiddenTskBar:!plswData->Settings.bShowHidden);
}
for (k = 0; (*pSkipList)[k] != NULL; k++)
WinSendDlgItemMsg(hwnd,LB_REMOVED,LM_INSERTITEM,MPFROMSHORT(LIT_END), MPFROMP((*pSkipList)[k]));
if ((pswblk=GetSwitchList(WinQueryAnchorBlock(hwnd),TRUE,&ulItems))!=NULL) {
for (k = 0; k < ulItems; k++)
if (pswblk->aswentry[k].swctl.uchVisibility==SWL_VISIBLE &&
!IsInSkipList(&plswData->Settings,pswblk->aswentry[k].swctl.szSwtitle,bTskBar))
WinSendDlgItemMsg(hwnd,LB_ADDED,LM_INSERTITEM,MPFROMSHORT(LIT_END),
MPFROMP(pswblk->aswentry[k].swctl.szSwtitle));
GetSwitchList(0,FALSE,NULL);
}
bInit = FALSE;
return (MRESULT)TRUE;
}
case WM_COMMAND: {
switch (SHORT1FROMMP(mp1)) {
case PB_REMOVE: {
UCHAR ucName[NAMELEN];
SHORT iIndex,k;
PSWBLOCK pswblk;
ULONG ulItems;
if ((pswblk=GetSwitchList(WinQueryAnchorBlock(hwnd),TRUE,&ulItems))==NULL) break;
while ((iIndex = (SHORT)WinSendDlgItemMsg(hwnd,LB_REMOVED,LM_QUERYSELECTION,MPFROMSHORT(LIT_FIRST),0)) != LIT_NONE) {
WinSendDlgItemMsg(hwnd,LB_REMOVED,LM_QUERYITEMTEXT,MPFROM2SHORT(iIndex,NAMELEN),MPFROMP(ucName));
WinSendDlgItemMsg(hwnd,LB_REMOVED,LM_DELETEITEM,MPFROMSHORT(iIndex),0);
for (k = 0; k < ulItems; k++)
if (strcmpi(ucName,pswblk->aswentry[k].swctl.szSwtitle)==0 &&
pswblk->aswentry[k].swctl.uchVisibility==SWL_VISIBLE) {
WinSendDlgItemMsg(hwnd,LB_ADDED,LM_INSERTITEM,MPFROMSHORT(LIT_END),MPFROMP(pswblk->aswentry[k].swctl.szSwtitle));
break;
}
RemoveFilter(&plswData->Settings,ucName,bTskBar);
}
GetSwitchList(0,FALSE,NULL);
if (bTskBar && plswData->Settings.bTaskBarOn)
WinPostMsg(plswData->hwndTaskBarClient,LSWM_INITBUTTONS,0,0);
break;
}
case PB_ADD: {
UCHAR ucName[NAMELEN];
SHORT iIndex;
WinQueryDlgItemText(hwnd,LB_ADDED,sizeof(ucName),MPFROMP(ucName));
WinSetDlgItemText(hwnd,LB_ADDED,NULL);
if (!AddFilter(&plswData->Settings,ucName,bTskBar)) break;
iIndex = (SHORT)WinSendDlgItemMsg(hwnd,LB_ADDED,LM_SEARCHSTRING,MPFROM2SHORT(0,LIT_FIRST),MPFROMP(ucName));
if (iIndex!=LIT_NONE && iIndex!=LIT_ERROR)
WinSendDlgItemMsg(hwnd,LB_ADDED,LM_DELETEITEM,MPFROMSHORT(iIndex),0);
WinSendDlgItemMsg(hwnd,LB_REMOVED,LM_INSERTITEM,MPFROMSHORT(LIT_END),MPFROMP(ucName));
if (bTskBar && plswData->Settings.bTaskBarOn)
WinPostMsg(plswData->hwndTaskBarClient,LSWM_INITBUTTONS,0,0);
break;
}
case PB_REFRESH: {
PSWBLOCK pswblk;
ULONG ulItems,k;
WinSendDlgItemMsg(hwnd,LB_ADDED,LM_DELETEALL,0,0);
if ((pswblk=GetSwitchList(WinQueryAnchorBlock(hwnd),TRUE,&ulItems))!=NULL) {
for (k = 0; k < ulItems; k++)
if (pswblk->aswentry[k].swctl.uchVisibility==SWL_VISIBLE &&
!IsInSkipList(&plswData->Settings,pswblk->aswentry[k].swctl.szSwtitle,bTskBar))
WinSendDlgItemMsg(hwnd,LB_ADDED,LM_INSERTITEM,MPFROMSHORT(LIT_END),
MPFROMP(pswblk->aswentry[k].swctl.szSwtitle));
GetSwitchList(0,FALSE,NULL);
}
break;
}
}
break;
}
case WM_CONTROL: {
BOOL bValue;
switch (SHORT1FROMMP(mp1)) {
case CHK_SHOWVIEWER:
case CHK_SHOWHIDDEN:
if (bInit) break;
bValue = !WinQueryButtonCheckstate(hwnd, CHK_SHOWVIEWER);
if (bTskBar) plswData->Settings.bShowViewerTskBar = bValue; else plswData->Settings.bShowViewer = bValue;
bValue = !WinQueryButtonCheckstate(hwnd, CHK_SHOWHIDDEN);
if (bTskBar) plswData->Settings.bShowHiddenTskBar = bValue; else plswData->Settings.bShowHidden = bValue;
if (bTskBar && plswData->Settings.bTaskBarOn)
WinPostMsg(plswData->hwndTaskBarClient,LSWM_INITBUTTONS,0,0);
break;
case LB_ADDED:
if (SHORT2FROMMP(mp1) == CBN_ENTER)
WinPostMsg(hwnd, WM_COMMAND, (MPARAM)PB_ADD, MPFROM2SHORT(CMDSRC_OTHER, FALSE));
break;
}
break;
}
default:
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
return (MRESULT)0;
}
MRESULT EXPENTRY TaskBarDlgProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{ static BOOL bInit = FALSE;
LSWDATA *plswData;
plswData = WinQueryWindowPtr(hwnd,0);
switch (msg) {
case WM_INITDLG: {
ULONG ulMenuEvent;
USHORT usEvent;
bInit = TRUE;
SetControlsFont(hwnd,FALSE);
DosGetNamedSharedMem((PVOID*)&plswData,SHAREMEM_NAME,PAG_READ | PAG_WRITE);
WinSetWindowPtr(hwnd,0,plswData);
DosFreeMem(plswData);
#ifndef XWORKPLACE
WinCheckButton(hwnd, CHK_TASKBARON, plswData->Settings.bTaskBarOn);
WinCheckButton(hwnd, CHK_TASKBARALWAYSVISIBLE, !plswData->Settings.bTaskBarAlwaysVisible);
WinCheckButton(hwnd, plswData->Settings.bTaskBarTopScr?RAD_TOP:RAD_BOTTOM, TRUE);
WinCheckButton(hwnd, CHK_REDUCEDSK, plswData->Settings.bReduceDsk);
WinEnableControl(hwnd, CHK_REDUCEDSK, plswData->Settings.bTaskBarAlwaysVisible);
WinCheckButton(hwnd, CHK_FLATBTN, plswData->Settings.bFlatButtons);
WinCheckButton(hwnd, CHK_ALLOWRESIZE, plswData->Settings.bAllowResize);
WinEnableControl(hwnd, CHK_TSKBARGROW,plswData->Settings.bIconsOnlyInTskBar);
WinCheckButton(hwnd, CHK_TSKBARGROW, plswData->Settings.bTskBarGrow);
#else
WinEnableControl(hwnd, CHK_TASKBARON,FALSE);
WinEnableControl(hwnd, CHK_TASKBARALWAYSVISIBLE,FALSE);
WinEnableControl(hwnd, RAD_TOP,FALSE);
WinEnableControl(hwnd, RAD_BOTTOM,FALSE);
WinEnableControl(hwnd, CHK_REDUCEDSK,FALSE);
WinEnableControl(hwnd, CHK_FLATBTN,FALSE);
WinEnableControl(hwnd, CHK_ALLOWRESIZE,FALSE);
WinEnableControl(hwnd, CHK_TSKBARGROW,FALSE);
#endif
WinEnableControl(hwnd, SPIN_BTNWID,!plswData->Settings.bIconsOnlyInTskBar);
WinCheckButton(hwnd, CHK_ICONSONLYTSKBAR, plswData->Settings.bIconsOnlyInTskBar);
WinCheckButton(hwnd, CHK_GROUPITEMS, plswData->Settings.bGroupItems);
WinCheckButton(hwnd, CHK_3DTASKBAR, plswData->Settings.b3DTaskBar);
WinSendDlgItemMsg(hwnd,SPIN_BTNWID,SPBM_SETLIMITS,MPFROMLONG(WinQuerySysValue(HWND_DESKTOP,SV_CXSCREEN)),MPFROMLONG(WinQuerySysValue(HWND_DESKTOP,SV_CYICON)/2+2*BUTTONBORDERWIDTH+2+2*TSKBARFRAMEWIDTH));
WinSendDlgItemMsg(hwnd,SPIN_BTNWID,SPBM_SETTEXTLIMIT,MPFROMSHORT(4),0);
WinSendDlgItemMsg(hwnd,SPIN_BTNWID,SPBM_SETCURRENTVALUE,MPFROMLONG(plswData->Settings.usMaxBtnWid),0);
usEvent=plswData->Settings.usSwitchMEvent;
WinCheckButton(hwnd, usEvent==WM_BUTTON1CLICK?RAD_SWMBTN1:
usEvent==WM_BUTTON2CLICK?RAD_SWMBTN2:
usEvent==WM_BUTTON3CLICK?RAD_SWMBTN3:RAD_SWMBTN12, TRUE);
usEvent=plswData->Settings.usMinMEvent;
WinCheckButton(hwnd, usEvent==WM_BUTTON1CLICK?RAD_MINMBTN1:
usEvent==WM_BUTTON2CLICK?RAD_MINMBTN2:
usEvent==WM_BUTTON3CLICK?RAD_MINMBTN3:RAD_MINMBTN12, TRUE);
usEvent=plswData->Settings.usCloseMEvent;
WinCheckButton(hwnd, usEvent==WM_BUTTON1CLICK?RAD_CLOSEMBTN1:
usEvent==WM_BUTTON2CLICK?RAD_CLOSEMBTN2:
usEvent==WM_BUTTON3CLICK?RAD_CLOSEMBTN3:RAD_CLOSEMBTN12, TRUE);
if (WinQuerySysValue(HWND_DESKTOP,SV_CMOUSEBUTTONS)<3) {
WinEnableControl(hwnd, RAD_SWMBTN3,FALSE);
WinEnableControl(hwnd, RAD_MINMBTN3,FALSE);
WinEnableControl(hwnd, RAD_CLOSEMBTN3,FALSE);
}
ulMenuEvent = WinQuerySysValue(HWND_DESKTOP,SV_CONTEXTMENU);
if (LOUSHORT(ulMenuEvent)==WM_BUTTON1CLICK && HIUSHORT(ulMenuEvent)==0) {
WinEnableControl(hwnd, RAD_SWMBTN1,FALSE);
WinEnableControl(hwnd, RAD_MINMBTN1,FALSE);
WinEnableControl(hwnd, RAD_CLOSEMBTN1,FALSE);
} else if (LOUSHORT(ulMenuEvent)==WM_BUTTON2CLICK && HIUSHORT(ulMenuEvent)==0) {
WinEnableControl(hwnd, RAD_SWMBTN2,FALSE);
WinEnableControl(hwnd, RAD_MINMBTN2,FALSE);
WinEnableControl(hwnd, RAD_CLOSEMBTN2,FALSE);
}
bInit = FALSE;
return (MRESULT)TRUE;
}
case WM_CONTROL: {
BOOL bValue;
if (bInit) break;
bValue = WinQueryButtonCheckstate(hwnd,SHORT1FROMMP(mp1));
switch (SHORT1FROMMP(mp1)) {
case SPIN_BTNWID:
if (SHORT2FROMMP(mp1)==SPBN_CHANGE) {
ULONG ulBtnWid;
SWP swp;
WinSendDlgItemMsg(hwnd,SPIN_BTNWID,SPBM_QUERYVALUE,MPFROMP(&ulBtnWid),MPFROM2SHORT(0,SPBQ_ALWAYSUPDATE));
plswData->Settings.usMaxBtnWid=(USHORT)ulBtnWid;
WinQueryWindowPos(plswData->hwndTaskBarClient,&swp);
WinPostMsg(plswData->hwndTaskBarClient,WM_SIZE,MPFROM2SHORT(swp.cx,swp.cy),MPFROM2SHORT(swp.cx,swp.cy));
}
break;
case CHK_TASKBARON:
plswData->Settings.bTaskBarOn = bValue;
if (bValue) InitTaskBar(plswData,NULL,0); else DoneTaskBar(plswData);
break;
case CHK_TASKBARALWAYSVISIBLE:
plswData->Settings.bTaskBarAlwaysVisible = !bValue;
WinEnableControl(hwnd, CHK_REDUCEDSK, plswData->Settings.bTaskBarAlwaysVisible);
WinShowWindow(plswData->hwndTaskBar,!bValue);
break;
case CHK_ICONSONLYTSKBAR: {
SWP swp;
plswData->Settings.bIconsOnlyInTskBar = bValue;
WinQueryWindowPos(plswData->hwndTaskBarClient,&swp);
WinPostMsg(plswData->hwndTaskBarClient,WM_SIZE,MPFROM2SHORT(swp.cx,swp.cy),MPFROM2SHORT(swp.cx,swp.cy));
WinEnableControl(hwnd, SPIN_BTNWID,!bValue);
#ifndef XWORKPLACE
if (!bValue && plswData->Settings.bTskBarGrow) {
plswData->Settings.bTskBarGrow=FALSE;
WinSetWindowPos(plswData->hwndTaskBar,0,0,0,
WinQuerySysValue(HWND_DESKTOP,SV_CXSCREEN)+2*TSKBARFRAMEWIDTH,
plswData->Settings.sTskBarCY,SWP_SIZE);
WinCheckButton(hwnd,CHK_TSKBARGROW,FALSE);
}
WinEnableControl(hwnd, CHK_TSKBARGROW,bValue);
#endif
break;
}
case CHK_REDUCEDSK:
plswData->Settings.bReduceDsk = bValue;
break;
case CHK_FLATBTN:
plswData->Settings.bFlatButtons = bValue;
WinInvalidateRect(plswData->hwndTaskBar,NULL,TRUE);
break;
case CHK_3DTASKBAR:
plswData->Settings.b3DTaskBar = bValue;
WinInvalidateRect(plswData->hwndTaskBarClient,NULL,TRUE);
break;
case CHK_GROUPITEMS:
plswData->Settings.bGroupItems = bValue;
WinPostMsg(plswData->hwndTaskBarClient,LSWM_INITBUTTONS,0,0);
break;
case CHK_ALLOWRESIZE: {
ULONG flFrameFlags=WinQueryWindowULong(plswData->hwndTaskBar,QWL_STYLE);
plswData->Settings.bAllowResize = bValue;
if (bValue) {
flFrameFlags&=~FS_BORDER; flFrameFlags|=FS_SIZEBORDER;
} else {
flFrameFlags&=~FS_SIZEBORDER; flFrameFlags|=FS_BORDER;
}
WinSetWindowULong(plswData->hwndTaskBar,QWL_STYLE,flFrameFlags);
break;
}
case CHK_TSKBARGROW: {
ULONG flFrameFlags=WinQueryWindowULong(plswData->hwndTaskBar,QWL_STYLE);
plswData->Settings.bTskBarGrow = bValue;
WinEnableControl(hwnd, CHK_ALLOWRESIZE, !bValue);
if (!bValue) {
flFrameFlags&=~FS_BORDER; flFrameFlags|=FS_SIZEBORDER;
} else {
flFrameFlags&=~FS_SIZEBORDER; flFrameFlags|=FS_BORDER;
}
WinSetWindowULong(plswData->hwndTaskBar,QWL_STYLE,flFrameFlags);
if (bValue) {
HENUM henum;
HWND hwndNext;
USHORT usButtons;
henum = WinBeginEnumWindows(plswData->hwndTaskBarClient); usButtons = 0;
while ((hwndNext=WinGetNextWindow(henum))!=NULLHANDLE) {
if (IsWindowClass(hwndNext,"#3"))
usButtons++;
}
WinEndEnumWindows(henum);
WinSetWindowPos(plswData->hwndTaskBar,0,0,0,
(WinQuerySysValue(HWND_DESKTOP,SV_CXICON)/2+2*BUTTONBORDERWIDTH+2)*usButtons+2*TSKBARFRAMEWIDTH,
plswData->Settings.sTskBarCY,SWP_SIZE);
} else
WinSetWindowPos(plswData->hwndTaskBar,0,0,0,
WinQuerySysValue(HWND_DESKTOP,SV_CXSCREEN)+2*TSKBARFRAMEWIDTH,
plswData->Settings.sTskBarCY,SWP_SIZE);
break;
}
case RAD_TOP:
case RAD_BOTTOM:
plswData->Settings.bTaskBarTopScr = WinQueryButtonCheckstate(hwnd, RAD_TOP);
if (plswData->Settings.bTaskBarTopScr)
plswData->Settings.sTskBarY = WinQuerySysValue(HWND_DESKTOP,SV_CYSCREEN)-plswData->Settings.sTskBarCY+TSKBARFRAMEWIDTH;
else
plswData->Settings.sTskBarY = -TSKBARFRAMEWIDTH;
WinSetWindowPos(plswData->hwndTaskBar,0 ,
plswData->Settings.sTskBarX,plswData->Settings.sTskBarY,
plswData->Settings.sTskBarCX,plswData->Settings.sTskBarCY,
SWP_MOVE);
break;
case RAD_SWMBTN1:
case RAD_SWMBTN2:
case RAD_SWMBTN3:
case RAD_SWMBTN12:
plswData->Settings.usSwitchMEvent =
(WinQueryButtonCheckstate(hwnd,RAD_SWMBTN1)?WM_BUTTON1CLICK:
WinQueryButtonCheckstate(hwnd,RAD_SWMBTN2)?WM_BUTTON2CLICK:
WinQueryButtonCheckstate(hwnd,RAD_SWMBTN3)?WM_BUTTON3CLICK:WM_CHORD);
break;
case RAD_MINMBTN1:
case RAD_MINMBTN2:
case RAD_MINMBTN3:
case RAD_MINMBTN12:
plswData->Settings.usMinMEvent =
(WinQueryButtonCheckstate(hwnd,RAD_MINMBTN1)?WM_BUTTON1CLICK:
WinQueryButtonCheckstate(hwnd,RAD_MINMBTN2)?WM_BUTTON2CLICK:
WinQueryButtonCheckstate(hwnd,RAD_MINMBTN3)?WM_BUTTON3CLICK:WM_CHORD);
break;
case RAD_CLOSEMBTN1:
case RAD_CLOSEMBTN2:
case RAD_CLOSEMBTN3:
case RAD_CLOSEMBTN12:
plswData->Settings.usCloseMEvent =
(WinQueryButtonCheckstate(hwnd,RAD_CLOSEMBTN1)?WM_BUTTON1CLICK:
WinQueryButtonCheckstate(hwnd,RAD_CLOSEMBTN2)?WM_BUTTON2CLICK:
WinQueryButtonCheckstate(hwnd,RAD_CLOSEMBTN3)?WM_BUTTON3CLICK:WM_CHORD);
break;
}
break;
}
default:
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
return 0;
}
MRESULT EXPENTRY HotkeyWndProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{
switch (msg) {
case WM_CHAR:
if (SHORT1FROMMP(mp1) & KC_CHAR)
WinSendMsg(WinQueryWindow(hwnd,QW_OWNER),WM_CONTROL,
MPFROM2SHORT(WinQueryWindowUShort(hwnd,QWS_ID),EN_SCANCODE),MPFROMCHAR(CHAR4FROMMP(mp1)));
default:
return (((PFNWP)WinQueryWindowPtr(hwnd,0))(hwnd,msg,mp1,mp2));
}
}
MRESULT EXPENTRY MiscDlgProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{ static BOOL bInit;
LSWDATA *plswData;
static UCHAR ucLangArr[128];
plswData = WinQueryWindowPtr(hwnd,0);
switch (msg) {
case WM_INITDLG: {
static UCHAR ucDllName[_MAX_PATH], ucLangStr[32], ucLang;
bInit = TRUE;
SetControlsFont(hwnd,FALSE);
DosGetNamedSharedMem((PVOID*)&plswData,SHAREMEM_NAME,PAG_READ | PAG_WRITE);
WinSetWindowPtr(hwnd,0,plswData);
DosFreeMem(plswData);
WinCheckButton(hwnd, CHK_SWDESKTOP, plswData->Settings.bDesktopMinimizes);
#ifndef XWORKPLACE
WinCheckButton(hwnd, CHK_SHOWINWINLIST, plswData->Settings.bShowInWinList);
#else
WinEnableControl(hwnd,CHK_SHOWINWINLIST,FALSE);
#endif
WinCheckButton(hwnd, CHK_ZORDER, plswData->Settings.bChangeZOrder);
WinSendDlgItemMsg(hwnd,EF_HOTKEY,EM_SETTEXTLIMIT,MPFROMSHORT(1),0);
WinSetDlgItemText(hwnd,EF_HOTKEY,&plswData->Settings.ucSettingsKey);
WinSetWindowPtr(WinWindowFromID(hwnd,EF_HOTKEY),0,
(VOID *)WinSubclassWindow(WinWindowFromID(hwnd,EF_HOTKEY),HotkeyWndProc));
while (FindResDll(ucDllName, sizeof(ucDllName), &ucLang, ucLangStr, sizeof(ucLangStr)))
if (ucLang!=0) {
SHORT sIndex;
sIndex = (SHORT)WinSendDlgItemMsg(hwnd,COMBO_LANG,LM_INSERTITEM,MPFROMSHORT(LIT_END), MPFROMP(ucLangStr));
if (sIndex!=LIT_ERROR) {
ucLangArr[sIndex]=ucLang;
if (ucLang == plswData->Settings.ucLanguage)
WinSendDlgItemMsg(hwnd,COMBO_LANG,LM_SELECTITEM,MPFROMSHORT(sIndex), MPFROMSHORT(TRUE));
}
}
bInit = FALSE;
return (MRESULT)TRUE;
}
case WM_CONTROL:
if (bInit) break;
switch (SHORT1FROMMP(mp1)) {
case COMBO_LANG:
if (SHORT2FROMMP(mp1)==CBN_EFCHANGE) {
SHORT sIndex;
sIndex = (SHORT)WinSendDlgItemMsg(hwnd,COMBO_LANG,LM_QUERYSELECTION,MPFROMSHORT(LIT_FIRST), 0);
if (sIndex>=0 && ucLangArr[sIndex]!=plswData->Settings.ucLanguage) {
WinDestroyAccelTable(plswData->haccAlt);
WinDestroyAccelTable(plswData->haccCtrl);
WinDestroyAccelTable(plswData->haccNoAlt);
DosFreeModule(plswData->hmodRes);
if ((plswData->hmodRes = LoadResource(ucLangArr[sIndex],plswData,FALSE))==0) {
plswData->hmodRes = LoadResource(plswData->Settings.ucLanguage,plswData,TRUE);
WinMessageBox(HWND_DESKTOP,HWND_DESKTOP,"Could not find resource DLL or resource DLL invalid",PGMNAME,0,MB_ERROR | MB_CANCEL);
}
}
}
break;
case EF_HOTKEY:
if (SHORT2FROMMP(mp1)==EN_CHANGE) {
UCHAR buf[3];
WinQueryDlgItemText(hwnd,EF_HOTKEY,sizeof(buf),buf);
plswData->Settings.ucSettingsKey=buf[0];
} else if (SHORT2FROMMP(mp1)==EN_SCANCODE) {
plswData->Settings.ucSettingsScan = CHAR1FROMMP(mp2);
}
break;
case CHK_ZORDER:
plswData->Settings.bChangeZOrder = WinQueryButtonCheckstate(hwnd, CHK_ZORDER);
break;
case CHK_SWDESKTOP:
plswData->Settings.bDesktopMinimizes = WinQueryButtonCheckstate(hwnd, CHK_SWDESKTOP);
break;
case CHK_SHOWINWINLIST: {
SHORT iIndex;
SWCNTRL swctl;
PID pidPid; TID tidTid;
WinQueryWindowProcess(hwnd,&pidPid,&tidTid);
WinQuerySwitchEntry(WinQuerySwitchHandle(0,pidPid),&swctl);
plswData->Settings.bShowInWinList = WinQueryButtonCheckstate(hwnd, CHK_SHOWINWINLIST);
WinQuerySwitchEntry(plswData->hswitch, &swctl);
swctl.uchVisibility = plswData->Settings.bShowInWinList ? SWL_VISIBLE : SWL_INVISIBLE;
WinChangeSwitchEntry(plswData->hswitch, &swctl);
if ((SHORT)(WinSendDlgItemMsg(hwnd,LB_REMOVED,LM_SEARCHSTRING,
MPFROM2SHORT(LSS_CASESENSITIVE,LIT_FIRST),
MPFROMP(swctl.szSwtitle)))==LIT_NONE) {
iIndex = (SHORT)(WinSendDlgItemMsg(hwnd,LB_ADDED,LM_SEARCHSTRING,
MPFROM2SHORT(LSS_CASESENSITIVE,LIT_FIRST),
MPFROMP(swctl.szSwtitle)));
if (plswData->Settings.bShowInWinList && iIndex==LIT_NONE)
WinSendDlgItemMsg(hwnd,LB_ADDED,LM_INSERTITEM,MPFROMSHORT(LIT_END),MPFROMP(swctl.szSwtitle));
else if (!plswData->Settings.bShowInWinList && iIndex!=LIT_ERROR && iIndex!=LIT_NONE)
WinSendDlgItemMsg(hwnd,LB_ADDED,LM_DELETEITEM,MPFROMSHORT(iIndex),0);
}
break;
}
}
break;
default:
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
return 0;
}
MRESULT EXPENTRY ParmDlgProc(HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{ static ULONG ulPopupFiltID, ulTskBarFiltID;
LSWDATA *plswData;
plswData = WinQueryWindowPtr(hwnd,0);
switch (msg) {
case WM_INITDLG: {
HWND hwndPage, hwndNB;
ULONG ulPageId;
RECTL rcl;
UCHAR ucBuf[64],ucBuf1[64];
SWP swp;
USHORT usDlgID,k,usNameID;
PFNWP pfnDlg;
plswData = (PLSWDATA)PVOIDFROMMP(mp2);
WinSetWindowPtr(hwnd,0,plswData);
SetControlsFont(hwnd,FALSE);
hwndNB = WinWindowFromID(hwnd,NB_PARAMS);
WinSendMsg(hwndNB, BKM_SETNOTEBOOKCOLORS, MPFROMLONG(SYSCLR_FIELDBACKGROUND),
MPFROMSHORT(BKA_BACKGROUNDPAGECOLORINDEX));
for (k = 0; k < 5; k++) {
switch (k) {
case 0: usDlgID = usNameID = DLG_POPUP; pfnDlg = PopupDlgProc; break;
case 1: usDlgID = DLG_EXCLUDE; usNameID = DLG_POPUP; pfnDlg = ListDlgProc; break;
case 2: usDlgID = usNameID = DLG_TASKBAR; pfnDlg = TaskBarDlgProc; break;
case 3: usDlgID = DLG_EXCLUDE; usNameID = DLG_TASKBAR; pfnDlg = ListDlgProc; break;
case 4: usDlgID = usNameID = DLG_MISC; pfnDlg = MiscDlgProc; break;
}
ulPageId = (LONG)WinSendMsg(hwndNB, BKM_INSERTPAGE, 0,
MPFROM2SHORT(BKA_AUTOPAGESIZE | (usDlgID==DLG_EXCLUDE?0:BKA_MAJOR) | BKA_STATUSTEXTON, BKA_LAST));
hwndPage = WinLoadDlg(hwndNB, hwndNB, pfnDlg, plswData->hmodRes, usDlgID, k==3?plswData:NULL);
WinSendMsg(hwndNB, BKM_SETPAGEWINDOWHWND, MPFROMLONG(ulPageId), MPFROMHWND(hwndPage));
WinLoadString(WinQueryAnchorBlock(hwnd), plswData->hmodRes,usNameID,sizeof(ucBuf),ucBuf);
WinSendMsg(hwndNB, BKM_SETTABTEXT, MPFROMLONG(ulPageId), MPFROMP(ucBuf));
if (k==1) {
WinQueryWindowRect(hwndPage,&rcl);
WinSendMsg(hwndNB, BKM_CALCPAGERECT, MPFROMP(&rcl), MPFROMSHORT(FALSE));
WinQueryWindowPos(WinWindowFromID(hwnd,PB_SAVE),&swp);
WinSetWindowPos(hwnd,0,0,0,rcl.xRight-rcl.xLeft+8, rcl.yTop-rcl.yBottom+swp.y+
swp.cy+swp.cy/2+2*WinQuerySysValue(HWND_DESKTOP,SV_CYTITLEBAR), SWP_SIZE);
ulPopupFiltID = ulPageId;
}
if (k==3) {
WinSetWindowUShort(hwndPage,QWS_ID,DLG_EXCLUDETSKBAR);
ulTskBarFiltID = ulPageId;
}
if (k < 4) {
WinLoadString(WinQueryAnchorBlock(hwnd), plswData->hmodRes, STR_DLGPAGE,sizeof(ucBuf1),ucBuf1);
sprintf(ucBuf,ucBuf1,(k+1)%2==0?2:1,2);
WinSendMsg(hwndNB,BKM_SETSTATUSLINETEXT,MPFROMLONG(ulPageId),MPFROMP(ucBuf));
}
}
#ifdef XWORKPLACE
WinDestroyWindow(WinWindowFromID(hwnd,PB_EXIT));
#endif
WinSetFocus(HWND_DESKTOP, hwndNB);
plswData->bSettingsDlgOn = TRUE;
return (MRESULT)TRUE;
}
case WM_ADJUSTWINDOWPOS: {
PSWP pswp;
SWP swp;
pswp=PVOIDFROMMP(mp1);
if (pswp->fl & SWP_SIZE) {
WinQueryWindowPos(WinWindowFromID(hwnd,PB_SAVE),&swp);
WinSetWindowPos(WinWindowFromID(hwnd,NB_PARAMS),0,4,swp.y+swp.cy+swp.cy/2, pswp->cx-8,
pswp->cy-swp.y-swp.cy-swp.cy/2-
2*WinQuerySysValue(HWND_DESKTOP,SV_CYTITLEBAR),SWP_SIZE|SWP_MOVE);
}
return (WinDefDlgProc(hwnd,msg,mp1,mp2));
}
case WM_CLOSE:
plswData->bSettingsDlgOn = FALSE;
plswData->hwndParamDlg = NULLHANDLE;
WinDestroyWindow(hwnd);
break;
case WM_COMMAND:
switch (SHORT1FROMMP(mp1)) {
case PB_EXIT:
WinPostMsg(hwnd, WM_QUIT, 0, 0);
break;
case PB_HIDE:
WinPostMsg(hwnd,WM_CLOSE,0,0);
break;
case PB_SAVE: {
USHORT rc;
static UCHAR ucErrMsg[100],ucFName[CCHMAXPATH],ucBuf[100+CCHMAXPATH];
GetIniFileName(ucFName,sizeof(ucFName));
if ((rc=SaveSettings(WinQueryAnchorBlock(hwnd),ucFName,&plswData->Settings))!=0) {
WinLoadString(WinQueryAnchorBlock(hwnd),NULLHANDLE,rc==1?MSG_CANTOPEN:MSG_CANTSAVE,sizeof(ucErrMsg),ucErrMsg);
sprintf(ucBuf,ucErrMsg,ucFName);
WinAlarm(HWND_DESKTOP,WA_ERROR);
WinMessageBox(HWND_DESKTOP,hwnd,ucBuf,PGMNAME,0,MB_ERROR | MB_CANCEL);
}
break;
}
}
break;
case WM_CONTROL: {
HWND hwndPage;
ULONG ulPageId;
if (SHORT1FROMMP(mp1)==NB_PARAMS && SHORT2FROMMP(mp1) == BKN_PAGESELECTED) {
ulPageId = ((PPAGESELECTNOTIFY)PVOIDFROMMP(mp2))->ulPageIdNew;
if (ulPageId == ulPopupFiltID || ulPageId == ulTskBarFiltID) {
hwndPage=LONGFROMMP(WinSendMsg(WinWindowFromID(hwnd,NB_PARAMS),BKM_QUERYPAGEWINDOWHWND,MPFROMLONG(ulPageId),0));
WinPostMsg(hwndPage,WM_COMMAND,MPFROMSHORT(PB_REFRESH),MPFROM2SHORT(CMDSRC_OTHER,FALSE));
}
}
break;
}
default:
return (WinDefDlgProc(hwnd,msg,mp1,mp2));
}
return 0;
}