📄 winsetup.cpp
字号:
#ifdef __BORLANDC__
#pragma argsused
#endif
/* language dialog box */
BOOL CALLBACK _export
LanguageDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG:
centre_dialog(hDlg);
ShowWindow(hDlg, SW_SHOWNORMAL);
return( TRUE);
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
case IDCANCEL:
EndDialog(hDlg, 0);
return(TRUE);
case IDM_LANGEN:
case IDM_LANGCT:
case IDM_LANGDE:
case IDM_LANGES:
case IDM_LANGFR:
case IDM_LANGGR:
case IDM_LANGIT:
case IDM_LANGNL:
case IDM_LANGRU:
case IDM_LANGSE:
case IDM_LANGSK:
EndDialog(hDlg, LOWORD(wParam));
return(TRUE);
default:
return(FALSE);
}
}
return(FALSE);
}
/* prompt to change language if Windows language doesn't match */
/* GSview language */
void
check_language(void)
{
char winlang[MAXSTR];
int language;
GetProfileString("Intl", "sLanguage", "ENG", winlang, sizeof(winlang));
/* if Window language isn't English */
if ( strnicmp(winlang, "EN", 2)
#ifdef BETA
|| TRUE
#endif
)
{
language = DialogBoxParam(g_hLanguage, MAKEINTRESOURCE(IDD_LANG), HWND_DESKTOP, LanguageDlgProc, (LPARAM)NULL);
switch (language) {
case IDM_LANGEN:
case IDM_LANGCT:
case IDM_LANGDE:
case IDM_LANGES:
case IDM_LANGFR:
case IDM_LANGGR:
case IDM_LANGIT:
case IDM_LANGNL:
case IDM_LANGRU:
case IDM_LANGSE:
case IDM_LANGSK:
load_language(language);
}
}
}
#ifdef __BORLANDC__
#pragma argsused /* ignore warning for next function */
#endif
/* input string dialog box */
BOOL CALLBACK _export
InputDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG:
SetDlgItemText(hDlg, ID_ANSWER, get_string_answer);
return( TRUE);
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
GetDlgItemText(hDlg, ID_ANSWER, get_string_answer, sizeof(get_string_answer));
EndDialog(hDlg, IDOK);
return(TRUE);
case IDCANCEL:
EndDialog(hDlg, IDCANCEL);
return(TRUE);
default:
return(FALSE);
}
}
return(FALSE);
}
#ifdef __BORLANDC__
#pragma argsused /* ignore warning for next function */
#endif
/* Modeless Dialog Box */
BOOL CALLBACK _export
MainDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static BOOL initialised;
switch(message) {
case WM_INITDIALOG:
/* create child dialog windows */
if (!initialised) {
WIZPAGE *page;
initialised=TRUE;
for (page=pages; page->id; page++) {
page->hwnd = CreateDialogParam(g_hLanguage, MAKEINTRESOURCE(page->id), hDlg, ModelessDlgProc, (LPARAM)NULL);
ShowWindow(page->hwnd, SW_HIDE);
}
ShowWindow(pages[0].hwnd, SW_SHOW);
SetFocus(GetDlgItem(pages[0].hwnd, IDNEXT));
SendDlgItemMessage(pages[0].hwnd, IDNEXT, BM_SETSTYLE,
(WPARAM)BS_DEFPUSHBUTTON, TRUE);
hwnd_current = pages[0].hwnd;
}
return FALSE; /* we decide the focus */
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDCANCEL:
case IDOK:
PostQuitMessage(0);
return(TRUE);
default:
return(FALSE);
}
case WM_CLOSE:
PostQuitMessage(0);
return TRUE;
}
return FALSE;
}
#ifdef __BORLANDC__
#pragma argsused /* ignore warning for next function */
#endif
/* Modeless Dialog Box */
BOOL CALLBACK _export
ModelessDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message) {
case WM_INITDIALOG:
return( TRUE);
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
case IDNEXT:
next_page(hDlg);
return(TRUE);
case IDPREV:
SendDlgItemMessage(hDlg, IDPREV, BM_SETSTYLE,
(WPARAM)0, TRUE); /* remove default style */
prev_page(hDlg);
return(TRUE);
case IDFINISH:
installing = TRUE;
if (!install_all() || g_bQuit) {
WIZPAGE *page;
/* FAILED */
page = find_page_from_id(IDD_TEXTWIN);
page->next = IDD_FAILED; /* KLUDGE */
EnableWindow(GetDlgItem(page->hwnd, IDNEXT), TRUE);
SetDlgItemText(find_page_from_id(IDD_FAILED)->hwnd,
IDD_FAILED_REASON, error_message);
gs_addmess(error_message);
gs_addmess_update();
}
else {
WIZPAGE *page;
page = find_page_from_id(IDD_TEXTWIN);
page->next = IDD_DONE; /* KLUDGE */
EnableWindow(GetDlgItem(page->hwnd, IDNEXT), TRUE);
gs_addmess_update();
}
if (autoexec_bak[0] != '\0') {
char buf1[MAXSTR], buf2[MAXSTR];
load_string(IDS_DONEBAK, buf1, sizeof(buf2));
sprintf(buf2, buf1, autoexec_bak);
SetDlgItemText(find_page_from_id(IDD_DONE)->hwnd,
IDD_DONE_BAK, buf2);
}
installing = FALSE;
PostMessage(find_page_from_id(IDD_TEXTWIN)->hwnd,
WM_COMMAND, (WPARAM)IDNEXT, (LPARAM)0);
return(TRUE);
case IDCANCEL:
g_bQuit = TRUE;
if (installing)
gs_addmess("\ncancelling\n");
else
PostMessage(GetParent(hDlg), WM_COMMAND,
(WPARAM)IDCANCEL, (LPARAM)0);
return(TRUE);
case IDC_CREATEFOLDER:
if (HIWORD(wParam) == BN_CLICKED) {
BOOL bFolder;
bFolder = SendDlgItemMessage(hDlg, IDC_CREATEFOLDER,
BM_GETCHECK, 0, 0) == BST_CHECKED;
EnableWindow(GetDlgItem(hDlg, IDM_PROGMAN2), bFolder);
EnableWindow(GetDlgItem(hDlg, IDC_ALLUSERS), bFolder);
EnableWindow(GetDlgItem(hDlg, IDC_BROWSE_GROUP), bFolder);
}
return(TRUE);
case IDC_VIEWREADME:
{
char szReadmeName[MAXSTR];
strcpy(szReadmeName, g_szSourceDir);
strcat(szReadmeName, "\\gsview\\Readme.htm");
ShellExecute(hDlg, NULL, szReadmeName,
NULL, NULL, SW_SHOWNORMAL);
}
return(TRUE);
case IDC_VIEWHELP:
{
char szHelpName[MAXSTR];
strcpy(szHelpName, g_szSourceDir);
strcat(szHelpName, "\\gsview\\");
load_string(IDS_HELPFILE, szHelpName+strlen(szHelpName),
sizeof(szHelpName) - strlen(szHelpName) - 1);
WinHelp(hDlg,szHelpName,HELP_CONTENTS,(DWORD)NULL);
}
return(TRUE);
case IDC_BROWSE_DIR:
{ char dir[MAXSTR];
char *p;
GetDlgItemText(find_page_from_id(IDD_DIR)->hwnd,
ID_ANSWER, dir, sizeof(dir));
strcpy(szDirName, dir);
if ( (p = strrchr(szDirName, '\\')) != (char *)NULL ) {
strcpy(szFolderName, p+1);
if (p == szDirName+2)
p++; // step over c:\ //
*p = '\0';
}
else {
strcpy(szDirName, "c:\\");
strcpy(szFolderName, dir);
}
if (DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_DIRDLG),
hDlg, DirDlgProc)) {
strcpy(dir, szDirName);
if (strlen(dir) && (dir[strlen(dir)-1] != '\\'))
strcat(dir, "\\");
strcat(dir, szFolderName);
SetDlgItemText(find_page_from_id(IDD_DIR)->hwnd,
ID_ANSWER, dir);
}
}
return(TRUE);
case IDC_BROWSE_GROUP:
{ char dir[MAXSTR];
char programs[MAXSTR];
char *p;
GetDlgItemText(find_page_from_id(IDD_FINISH)->hwnd,
IDM_PROGMAN2, dir, sizeof(dir));
cinst.GetPrograms(
SendDlgItemMessage(hDlg, IDC_ALLUSERS,
BM_GETCHECK, 0, 0) == BST_CHECKED,
programs, sizeof(programs));
strcpy(szDirName, programs);
strcpy(szFolderName, dir);
if (DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_DIRDLG),
hDlg, DirDlgProc)) {
strcpy(dir, szFolderName);
p = szDirName;
if (strnicmp(szDirName, programs,
strlen(programs)) == 0) {
p += strlen(programs);
if (*p == '\\')
p++;
strcpy(dir, p);
if (strlen(dir) &&
(dir[strlen(dir)-1] != '\\'))
strcat(dir, "\\");
strcat(dir, szFolderName);
}
SetDlgItemText(find_page_from_id(IDD_FINISH)->hwnd,
IDM_PROGMAN2, dir);
}
}
return TRUE;
case TEXTWIN_COPY:
{HGLOBAL hglobal;
LPSTR p;
DWORD result;
int start, end;
result = SendDlgItemMessage(hDlg, TEXTWIN_MLE, EM_GETSEL, (WPARAM)0, (LPARAM)0);
start = LOWORD(result);
end = HIWORD(result);
if (start == end) {
start = 0;
end = twend;
}
hglobal = GlobalAlloc(GHND | GMEM_SHARE, end-start+1);
if (hglobal == (HGLOBAL)NULL) {
MessageBeep(~0);
return(FALSE);
}
p = (LPSTR)GlobalLock(hglobal);
if (p == (LPSTR)NULL) {
MessageBeep(~0);
return(FALSE);
}
lstrcpyn(p, twbuf+start, end-start);
GlobalUnlock(hglobal);
OpenClipboard(hDlg);
EmptyClipboard();
SetClipboardData(CF_TEXT, hglobal);
CloseClipboard();
}
default:
return(FALSE);
}
case WM_CLOSE:
PostMessage(GetParent(hDlg), WM_COMMAND, (WPARAM)IDCANCEL, (LPARAM)0);
return TRUE;
}
return FALSE;
}
//////////////////////////////////////////////////////////////////////
// Create file list
//////////////////////////////////////////////////////////////////////
FILE *fList;
typedef int (*PFN_dodir)(const char *name);
/* Called once for each directory */
#ifdef __BORLANDC__
#pragma argsused
#endif
int
dodir(const char *filename)
{
return 0;
}
/* Called once for each file */
int
dofile(const char *filename)
{
if (fList != (FILE *)NULL) {
fputs(filename, fList);
fputs("\n", fList);
}
return 0;
}
/* Walk through directory 'path', calling dodir() for given directory
* and dofile() for each file.
* If recurse=1, recurse into subdirectories, calling dodir() for
* each directory.
*/
int
dirwalk(char *path, int recurse, PFN_dodir dodir, PFN_dodir dofile)
{
WIN32_FIND_DATA find_data;
HANDLE find_handle;
char pattern[MAXSTR]; /* orig pattern + modified pattern */
char base[MAXSTR];
char name[MAXSTR];
BOOL bMore = TRUE;
char *p;
if (path) {
strcpy(pattern, path);
if (strlen(pattern) != 0) {
p = pattern + strlen(pattern) -1;
if (*p == '\\')
*p = '\0'; // truncate trailing backslash
}
strcpy(base, pattern);
if (strchr(base, '*') != NULL) {
// wildcard already included
// truncate it from the base path
if ( (p = strrchr(base, '\\')) != NULL )
*(++p) = '\0';
}
else if (isalpha(pattern[0]) &&
pattern[1]==':' && pattern[2]=='\0') {
strcat(pattern, "\\*"); // search entire disk
strcat(base, "\\");
}
else {
// wildcard NOT included
// check to see if path is a directory
find_handle = FindFirstFile(pattern, &find_data);
if (find_handle != INVALID_HANDLE_VALUE) {
FindClose(find_handle);
if (find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
strcat(pattern, "\\*"); // yes, search files
strcat(base, "\\");
}
else {
dofile(path); // no, return just this file
return 0;
}
}
else
return 1; // path invalid
}
}
else {
base[0] = '\0';
strcpy(pattern, "*");
}
find_handle = FindFirstFile(pattern, &find_data);
if (find_handle == INVALID_HANDLE_VALUE)
return 1;
while (bMore) {
strcpy(name, base);
strcat(name, find_data.cFileName);
if (find_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if ( strcmp(find_data.cFileName, ".") &&
strcmp(find_data.cFileName, "..") ) {
dodir(name);
if (recurse)
dirwalk(name, recurse, dodir, dofile);
}
}
else {
dofile(name);
}
bMore = FindNextFile(find_handle, &find_data);
}
FindClose(find_handle);
return 0;
}
// This is used when creating a file list.
BOOL make_filelist(int argc, char *argv[])
{
char *title = NULL;
char *dir = NULL;
char *list = NULL;
int i;
g_bBatch = TRUE; // Don't run message loop
for (i=1; i<argc; i++) {
if (strcmp(argv[i], "-filelist") == 0) {
/* ignore */
}
if (strcmp(argv[i], "-title") == 0) {
i++;
title = argv[i];
}
else if (strcmp(argv[i], "-dir") == 0) {
i++;
dir = argv[i];
}
else if (strcmp(argv[i], "-list") == 0) {
i++;
list = argv[i];
}
else {
if ((title == NULL) || (strlen(title) == 0) ||
(dir == NULL) || (strlen(dir) == 0) ||
(list == NULL) || (strlen(list) == 0)) {
message_box("Usage: setupgs -filelist -title \042AFPL Ghostscript #.##\042 -dir \042gs#.##\042 -list \042filelist.txt\042 spec1 spec2 specn\n");
return FALSE;
}
if (fList == (FILE *)NULL) {
if ( (fList = fopen(list, "w")) == (FILE *)NULL ) {
message_box("Can't write list file\n");
return FALSE;
}
fputs(title, fList);
fputs("\n", fList);
fputs(dir, fList);
fputs("\n", fList);
}
if (argv[i][0] == '@') {
// Use @filename with list of files/directories
// to avoid DOS command line limit
FILE *f;
char buf[MAXSTR];
int j;
if ( (f = fopen(&(argv[i][1]), "r")) != (FILE *)NULL) {
while (fgets(buf, sizeof(buf), f)) {
// remove trailing newline and spaces
while ( ((j = strlen(buf)-1) >= 0) &&
((buf[j] == '\n') || (buf[j] == ' ')) )
buf[j] = '\0';
dirwalk(buf, TRUE, dodir, dofile);
}
fclose(f);
}
else {
wsprintf(buf, "Can't open @ file \042%s\042",
&argv[i][1]);
message_box(buf);
}
}
else
dirwalk(argv[i], TRUE, dodir, dofile);
}
}
if (fList != (FILE *)NULL) {
fclose(fList);
fList = NULL;
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -