📄 gvpdlg.c
字号:
case WM_CONTROL:
notify_message = SHORT2FROMMP(mp1);
if (SHORT1FROMMP(mp1) == PAGE_LIST)
switch (notify_message) {
case LN_ENTER:
if (SHORT1FROMMP(mp1) == PAGE_LIST)
WinPostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPFROM2SHORT(CMDSRC_OTHER, TRUE));
break;
case LN_SELECT:
i = (int)WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_QUERYSELECTION, (MPARAM)0, (MPARAM)0);
if (i != LIT_NONE) {
char buf[MAXSTR];
WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST), LM_QUERYITEMTEXT,
MPFROM2SHORT(i, sizeof(buf)), MPFROMP(buf) );
/* Update edit field, but stop edit field from
* from altering list box selection */
ecdisable = TRUE;
WinSetWindowText( WinWindowFromID(hwnd, PAGE_EDIT), (PBYTE)buf);
ecdisable = FALSE;
}
break;
}
else if ( !ecdisable && (SHORT1FROMMP(mp1) == PAGE_EDIT)
&& (notify_message = EN_CHANGE) ) {
char buf[MAXSTR];
WinQueryWindowText(WinWindowFromID(hwnd, PAGE_EDIT),
sizeof(buf), (PBYTE)buf);
i = (int)WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST), LM_SEARCHSTRING,
MPFROM2SHORT(LSS_CASESENSITIVE, LIT_FIRST),
MPFROMP(buf) );
if (i != LIT_NONE) {
WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST),
LM_SELECTITEM, MPFROMLONG(i), MPFROMLONG(TRUE) );
/*
if (i > 5)
WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST),
LM_SETTOPINDEX, MPFROMLONG(i - 5), (MPARAM)0 );
*/
}
}
break;
case WM_COMMAND:
switch(LOUSHORT(mp1)) {
case DID_OK:
i = (int)WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_QUERYSELECTION, (MPARAM)0, (MPARAM)0);
if (i == LIT_NONE) {
WinDismissDlg(hwnd, DID_CANCEL);
}
psfile.page_list.current = i;
for (i=0; i<(int)psfile.dsc->page_count; i++) {
psfile.page_list.select[i] = 0;
}
psfile.page_list.select[psfile.page_list.current] = TRUE;
WinDismissDlg(hwnd, DID_OK);
return (MRESULT)TRUE;
case DID_CANCEL:
WinDismissDlg(hwnd, DID_CANCEL);
return (MRESULT)TRUE;
case ID_HELP:
get_help();
return (MRESULT)TRUE;
}
break;
}
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
MRESULT EXPENTRY PageMultiDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
int i;
int notify_message;
switch(msg) {
case WM_INITDLG:
{char buf[MAXSTR];
if (psfile.page_list.reverse)
WinSendMsg( WinWindowFromID(hwnd, PAGE_REVERSE),
BM_SETCHECK, MPFROMLONG(1), MPFROMLONG(0));
for (i=0; i<(int)psfile.dsc->page_count; i++) {
page_ordlabel(buf, i);
WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST),
LM_INSERTITEM, MPFROMLONG(LIT_END),
MPFROMP(buf) );
}
for (i=0; i<(int)psfile.dsc->page_count; i++) {
if (psfile.page_list.select[i])
WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST), LM_SELECTITEM,
MPFROMLONG(i), MPFROMLONG(TRUE) );
}
WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST),
LM_SELECTITEM, MPFROMLONG(psfile.page_list.current), MPFROMLONG(TRUE) );
if (psfile.page_list.current > 5)
WinSendMsg( WinWindowFromID(hwnd, PAGE_LIST),
LM_SETTOPINDEX, MPFROMLONG(psfile.page_list.current - 5), (MPARAM)0 );
if (!psfile.page_list.multiple) {
WinEnableWindow(WinWindowFromID(hwnd, PAGE_ALL), FALSE);
WinEnableWindow(WinWindowFromID(hwnd, PAGE_ODD), FALSE);
WinEnableWindow(WinWindowFromID(hwnd, PAGE_EVEN), FALSE);
}
}
break;
case WM_CONTROL:
notify_message = SHORT2FROMMP(mp1);
switch (notify_message) {
case LN_ENTER:
if (SHORT1FROMMP(mp1) == PAGE_LIST)
WinPostMsg(hwnd, WM_COMMAND, (MPARAM)DID_OK, MPFROM2SHORT(CMDSRC_OTHER, TRUE));
break;
}
break;
case WM_COMMAND:
switch(LOUSHORT(mp1)) {
case DID_CANCEL:
WinDismissDlg(hwnd, DID_CANCEL);
return (MRESULT)TRUE;
case DID_OK:
psfile.page_list.reverse =
(int)WinSendMsg( WinWindowFromID(hwnd, PAGE_REVERSE),
BM_QUERYCHECK, MPFROMLONG(0), MPFROMLONG(0));
i = (int)WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_QUERYSELECTION, (MPARAM)0, (MPARAM)0);
psfile.page_list.current = (i == LIT_NONE) ? 0 : i;
for (i=0; i<(int)psfile.dsc->page_count; i++) {
psfile.page_list.select[i] = 0;
}
if (psfile.page_list.multiple) {
i = LIT_FIRST;
while ( (i = (int)WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_QUERYSELECTION, (MPARAM)i, (MPARAM)0))
!= LIT_NONE )
psfile.page_list.select[i] = TRUE;
}
else
psfile.page_list.select[psfile.page_list.current] = TRUE;
WinDismissDlg(hwnd, DID_OK);
return (MRESULT)TRUE;
case PAGE_ALL:
WinEnableWindowUpdate(WinWindowFromID(hwnd, PAGE_LIST), FALSE);
for (i=(int)WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_QUERYITEMCOUNT, (MPARAM)0, (MPARAM)0)-1; i>=0; i--)
WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_SELECTITEM, (MPARAM)i, (MPARAM)TRUE);
WinEnableWindowUpdate(WinWindowFromID(hwnd, PAGE_LIST), TRUE);
return (MRESULT)TRUE;
case PAGE_ODD:
WinEnableWindowUpdate(WinWindowFromID(hwnd, PAGE_LIST), FALSE);
{ int first, last;
contiguous_range(hwnd, &first, &last);
for (i=(int)WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_QUERYITEMCOUNT, (MPARAM)0, (MPARAM)0)-1; i>=0; i--)
if (i >= first && i < last)
WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_SELECTITEM, (MPARAM)i, (MPARAM)!(i&1));
WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_SETTOPINDEX, MPFROMSHORT(first), (MPARAM)0);
}
WinEnableWindowUpdate(WinWindowFromID(hwnd, PAGE_LIST), TRUE);
return (MRESULT)TRUE;
case PAGE_EVEN:
WinEnableWindowUpdate(WinWindowFromID(hwnd, PAGE_LIST), FALSE);
{ int first, last;
contiguous_range(hwnd, &first, &last);
for (i=(int)WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_QUERYITEMCOUNT, (MPARAM)0, (MPARAM)0)-1; i>=0; i--)
if (i >= first && i < last)
WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_SELECTITEM, (MPARAM)i, (MPARAM)(i&1));
WinSendMsg(WinWindowFromID(hwnd, PAGE_LIST),
LM_SETTOPINDEX, MPFROMSHORT(first), (MPARAM)0);
}
WinEnableWindowUpdate(WinWindowFromID(hwnd, PAGE_LIST), TRUE);
return (MRESULT)TRUE;
case ID_HELP:
get_help();
return (MRESULT)TRUE;
}
break;
}
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
/* Get page number from dialog box and store in ppage */
/* multiple is TRUE if multiple pages may be selected */
/* allpages is TRUE if all pages should be initially selected */
BOOL
get_page(int *ppage, BOOL multiple, BOOL allpages)
{
int flag;
int i;
if (psfile.dsc == (CDSC *)NULL)
return FALSE;
if (psfile.dsc->page_count == 0) {
gserror(IDS_NOPAGE, NULL, MB_ICONEXCLAMATION, SOUND_NONUMBER);
return FALSE;
}
/* Make psfile.page_list.reverse sticky */
/* psfile.page_list.reverse = FALSE; */
psfile.page_list.current = *ppage - 1;
psfile.page_list.multiple = multiple;
if (psfile.page_list.select == (BOOL *)NULL)
return FALSE;
memset(psfile.page_list.select, 0, psfile.dsc->page_count * sizeof(BOOL) );
if (multiple && allpages) {
for (i=0; i< (int)psfile.dsc->page_count; i++)
psfile.page_list.select[i] = TRUE;
}
else
psfile.page_list.select[psfile.page_list.current] = TRUE;
if (psfile.page_list.multiple)
flag = WinDlgBox(HWND_DESKTOP, hwnd_frame, PageMultiDlgProc, hlanguage, IDD_MULTIPAGE, NULL);
else
flag = WinDlgBox(HWND_DESKTOP, hwnd_frame, PageDlgProc, hlanguage, IDD_PAGE, NULL);
if ((flag == DID_OK) && (psfile.page_list.current >= 0))
*ppage = psfile.page_list.current + 1;
return (flag == DID_OK);
}
MRESULT EXPENTRY BoundingBoxDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
static int bboxindex;
float x, y;
char buf[MAXSTR];
switch(msg) {
case WM_INITDLG:
bboxindex = 0;
load_string(IDS_BBPROMPT, buf, sizeof(buf));
WinSetDlgItemText(hwnd, BB_PROMPT, (PBYTE)buf);
break;
case WM_COMMAND:
switch(SHORT1FROMMP(mp1)) {
case BB_CLICK:
if (!get_cursorpos(&x, &y)) {
WinDestroyWindow(hwnd);
hwnd_modeless = 0;
}
switch(bboxindex) {
case 0:
bbox.llx = (int)x;
break;
case 1:
bbox.lly = (int)y;
break;
case 2:
bbox.urx = (int)x;
break;
case 3:
bbox.ury = (int)y;
bbox.valid = TRUE;
break;
}
bboxindex++;
if (bboxindex <= 3) {
load_string(IDS_BBPROMPT+bboxindex, buf, sizeof(buf));
WinSetDlgItemText(hwnd, BB_PROMPT, (PBYTE)buf);
WinSetFocus(HWND_DESKTOP, hwnd_modeless);
return (MRESULT)FALSE;
}
/* all corners have been obtained so close dialog box */
WinDestroyWindow(hwnd);
hwnd_modeless = 0;
return (MRESULT)TRUE;
}
case WM_CLOSE:
WinDestroyWindow(hwnd);
hwnd_modeless = 0;
return (MRESULT)TRUE;
}
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
BOOL
get_bbox(void)
{
QMSG q_mess; /* queue message */
bbox.valid = FALSE;
bbox.llx = bbox.lly = bbox.urx = bbox.ury = 0;
if ((gsdll.state != GS_PAGE) && (gsdll.state != GS_IDLE)) {
gserror(IDS_EPSNOBBOX, NULL, MB_ICONEXCLAMATION, SOUND_ERROR);
return FALSE;
}
hwnd_modeless = WinLoadDlg(HWND_DESKTOP, hwnd_frame, BoundingBoxDlgProc, hlanguage, IDD_BBOX, NULL);
WinSetWindowPos(hwnd_modeless, HWND_TOP, 0, 0, 0, 0, SWP_ZORDER | SWP_ACTIVATE);
while (hwnd_modeless) {
/* wait for bounding box to be obtained */
if (WinGetMsg(hab, &q_mess, 0L, 0, 0))
WinDispatchMsg(hab, &q_mess);
}
return bbox.valid;
}
/* dialog box for warning PSTOEPS warning and auto/manual bbox selection */
MRESULT EXPENTRY
PSTOEPSDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
switch (msg) {
case WM_INITDLG:
if (option.auto_bbox)
WinSendMsg( WinWindowFromID(hwnd, PSTOEPS_AUTOBBOX),
BM_SETCHECK, MPFROMLONG(1), MPFROMLONG(0));
break;
case WM_COMMAND:
switch(SHORT1FROMMP(mp1)) {
case ID_HELP:
nHelpTopic = IDS_TOPICPSTOEPS;
get_help();
return (MRESULT)TRUE;
case DID_OK:
case IDYES:
/* get Print to File status */
option.auto_bbox = (int)WinSendMsg( WinWindowFromID(hwnd, PSTOEPS_AUTOBBOX), BM_QUERYCHECK, MPFROMLONG(0), MPFROMLONG(0));
WinDismissDlg(hwnd, IDYES);
return (MRESULT)TRUE;
case IDNO:
nHelpTopic = IDS_TOPICPSTOEPS;
get_help();
WinDismissDlg(hwnd, IDNO);
return (MRESULT)TRUE;
case DID_CANCEL:
WinDismissDlg(hwnd, DID_CANCEL);
return (MRESULT)TRUE;
}
break;
}
return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
BOOL
pstoeps_warn(void)
{
return (WinDlgBox(HWND_DESKTOP, hwnd_frame, PSTOEPSDlgProc, hlanguage, IDD_PSTOEPS, NULL) == IDYES);
}
/* sounds stuff */
#define MAX_SYSTEM_SOUND 16
char *system_sounds;
char *sound_entry[MAX_SYSTEM_SOUND];
char szNone[32];
char szSpeaker[32];
int system_num;
MRESULT EXPENTRY SoundDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2);
int
load_sounds(void)
{
char *p;
int j;
HINI hini;
/* add our two sounds */
sound_entry[0] = "";
sound_entry[1] = BEEP;
load_string(IDS_NONE, szNone, sizeof(szNone));
load_string(IDS_SPKR, szSpeaker, sizeof(szSpeaker));
/* get list of system sounds */
system_sounds = (char *)malloc(PROFILE_SIZE);
memset(system_sounds, 0, PROFILE_SIZE);
if (system_sounds != (char *)NULL) {
if ( (hini = PrfOpenProfile(hab, szMMini)) != NULLHANDLE ) {
PrfQueryProfileString(hini, (PCSZ)"MMPM2_AlarmSounds", NULL, (PCSZ)"\0\0", system_sounds, PROFILE_SIZE-1);
PrfCloseProfile(hini);
}
}
p = system_sounds;
for (j=2; p!=(char *)NULL && j<MAX_SYSTEM_SOUND && strlen(p)!=0; j++) {
if (atoi(p) > 100)
p += strlen(p) + 1; /* ignore <Try it> */
if (strlen(p)==0)
j--;
else {
sound_entry[j] = p;
p += strlen(p) + 1;
}
}
system_num = j;
return system_num;
}
char *
get_sound_entry(int index)
{
return (sound_entry[index]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -