📄 stdprop.c
字号:
SetEditField(hwnd, IDC_HELPPATH, szHelpPathTemp);
CheckRadioButton(hwnd, IDC_HELPMSDN, IDC_HELPSPEC, HelpModeTemp
== HELP_MSDN ? IDC_HELPMSDN : HelpModeTemp == HELP_SDK ?
IDC_HELPSDK : IDC_HELPSPEC);
break;
case PSN_KILLACTIVE:
/* verify ok always */
GetEditField(hwnd, IDC_INSTALLPATH, szInstallPathTemp);
if (GetCBField(hwnd, IDC_HELPMSDN))
HelpModeTemp = HELP_MSDN;
else if (GetCBField(hwnd, IDC_HELPSDK))
HelpModeTemp = HELP_SDK;
else
HelpModeTemp = HELP_SPECIFIED;
GetEditField(hwnd, IDC_HELPPATH, szHelpPathTemp);
SetResult(hwnd, FALSE);
break;
case PSN_APPLY:
/* Page application */
strcpy(szInstallPath, szInstallPathTemp);
len = strlen(szInstallPath);
if (len && szInstallPath[len - 1] == '\\')
szInstallPath[len - 1] = 0;
StringToProfile("InstallPath", szInstallPath);
HelpMode = HelpModeTemp;
strcpy(szHelpPath, szHelpPathTemp);
RundownHelp();
InitHelp();
break;
case PSN_HELP:
ContextHelp(127);
break;
}
break;
}
return FALSE;
}
// ==============================================================
//
// display the property sheet and return to caller
//
void DisplayProperties(HINSTANCE hInst, HWND hwnd)
{
tabsTemp = tabs;
keywordColorTemp = keywordColor;
commentColorTemp = commentColor;
numberColorTemp = numberColor;
stringColorTemp = stringColor;
escapeColorTemp = escapeColor;
backgroundColorTemp = backgroundColor;
textColorTemp = textColor;
editFlagsTemp = editFlags;
browseInfoTemp = browseInfo;
HelpModeTemp = HelpMode;
memcpy(custColorsTemp, custColors, sizeof(custColors));
strcpy(szInstallPathTemp, szInstallPath);
strcpy(szHelpPathTemp, szHelpPath);
// struct for server page
editPages[EDITPROP].dwSize = sizeof(PROPSHEETPAGE);
editPages[EDITPROP].dwFlags = PSP_HASHELP;
editPages[EDITPROP].hInstance = hInst;
editPages[EDITPROP].u.pszTemplate = "EDITPROPDLG";
editPages[EDITPROP].pfnDlgProc = EditProc;
editPages[EDITPROP].pszTitle = "Edit";
editPages[GENERALPROP].dwSize = sizeof(PROPSHEETPAGE);
editPages[GENERALPROP].dwFlags = PSP_HASHELP;
editPages[GENERALPROP].hInstance = hInst;
editPages[GENERALPROP].u.pszTemplate = "GENERALPROPDLG";
editPages[GENERALPROP].pfnDlgProc = GeneralProc;
editPages[GENERALPROP].pszTitle = "General";
editPages[INSTALLPROP].dwSize = sizeof(PROPSHEETPAGE);
editPages[INSTALLPROP].dwFlags = PSP_HASHELP;
editPages[INSTALLPROP].hInstance = hInst;
editPages[INSTALLPROP].u.pszTemplate = "INSTALLPROPDLG";
editPages[INSTALLPROP].pfnDlgProc = InstallProc;
editPages[INSTALLPROP].pszTitle = "Install";
// struct for property sheet header
editHeader.dwSize = sizeof(PROPSHEETHEADER);
editHeader.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_NOAPPLYNOW /*
| PSH_HASHELP*/;
editHeader.hwndParent = hwnd;
editHeader.hInstance = hInstance;
editHeader.pszCaption = "General";
editHeader.nPages = EDIT_PROPERTY_SHEET_COUNT;
editHeader.u2.nStartPage = 0;
editHeader.u3.ppsp = &editPages[0];
// make the property sheet and exit
PropertySheet(&editHeader);
}
// ==============================================================
//
// property sheet constant names
//
#define TARGET_PROPERTY_SHEET_COUNT 6
#define TARGETPROP 0
#define DEBUGPROP 1
#define DEFINEPROP 2
#define TOOLOPTSPROP 3
#define PREBUILDPROP 4
#define POSTBUILDPROP 5
static PROPSHEETPAGE pages[TARGET_PROPERTY_SHEET_COUNT]; // the page structures
static PROPSHEETHEADER header; // the header structure
static PROJLIST *proj;
static PROJLIST workProj;
DEFINES *duplicateDefines(DEFINES *p)
{
DEFINES *rv = 0, **l = &rv;
while (p)
{
*l = malloc(sizeof(DEFINES));
if (! *l)
return rv;
**l = *p;
(*l)->next = 0;
p = p->next;
l = &(*l)->next;
}
return rv;
}
// ==============================================================
//
static int FAR PASCAL TargetProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
lparam)
{
NMHDR *nmhead;
int l;
switch (wmsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_NOTIFY:
nmhead = (NMHDR*)lparam;
switch (nmhead->code)
{
case PSN_SETACTIVE:
/* page startup */
SendDlgItemMessage(hwnd, IDC_BUILDTYPE, CB_RESETCONTENT, 0, 0);
SendDlgItemMessage(hwnd, IDC_LIBTYPE, CB_RESETCONTENT, 0, 0);
NewFocus(hwnd, IDC_BUILDTYPE);
SetEditField(hwnd, IDC_INCLUDEPATH, relincludepath
(workProj.includePath));
SetEditField(hwnd, IDC_OUTPUTPATH, relpath(workProj.outputPath))
;
SetCBField(hwnd, IDC_DEBUGINFO, workProj.buildFlags
&BF_DEBUGINFO ? 1 : 0);
SetCBField(hwnd, IDC_MAPFILE, workProj.buildFlags &BF_MAPFILE ?
1 : 0);
SetCBField(hwnd, IDC_COMPILEVIAASM, workProj.buildFlags
&BF_COMPILEVIAASM ? 1 : 0);
SetCBField(hwnd, IDC_CHOSENPROJECT, workProj.buildFlags
&BF_CHOSENPROJECT ? 1 : 0);
SetCBField(hwnd, IDC_SHOWWARNINGS, workProj.buildFlags
&BF_SHOWWARNINGS ? 1 : 0);
SetCBField(hwnd, IDC_C99, workProj.buildFlags &BF_C99 ? 1 : 0);
SetCBField(hwnd, IDC_ANSI, workProj.buildFlags &BF_ANSI ? 1 : 0);
AddComboString(hwnd, IDC_BUILDTYPE, "Windows Console");
AddComboString(hwnd, IDC_BUILDTYPE, "Windows GUI");
AddComboString(hwnd, IDC_BUILDTYPE, "Windows DLL");
AddComboString(hwnd, IDC_BUILDTYPE, "Library");
AddComboString(hwnd, IDC_BUILDTYPE, "MSDOS");
AddComboString(hwnd, IDC_BUILDTYPE, "RAW");
SetComboSel(hwnd, IDC_BUILDTYPE, workProj.buildType);
AddComboString(hwnd, IDC_LIBTYPE, "Static RTL");
AddComboString(hwnd, IDC_LIBTYPE, "Dynamic RTL");
AddComboString(hwnd, IDC_LIBTYPE, "No Library");
AddComboString(hwnd, IDC_LIBTYPE, "CRTDLL.DLL");
SetComboSel(hwnd, IDC_LIBTYPE, workProj.libType);
break;
case PSN_KILLACTIVE:
workProj.buildType = GetComboSel(hwnd, IDC_BUILDTYPE);
workProj.libType = GetComboSel(hwnd, IDC_LIBTYPE);
GetEditField(hwnd, IDC_INCLUDEPATH, workProj.includePath);
GetEditField(hwnd, IDC_OUTPUTPATH, workProj.outputPath);
if (workProj.includePath[0] && workProj.includePath[strlen
(workProj.includePath) - 1] == '\\')
workProj.includePath[strlen(workProj.includePath) - 1] = 0;
if (workProj.outputPath[0] && workProj.outputPath[strlen
(workProj.outputPath) - 1] == '\\')
workProj.outputPath[strlen(workProj.outputPath) - 1] = 0;
absincludepath(workProj.includePath);
abspath(workProj.outputPath);
workProj.buildFlags &= ~(BF_DEBUGINFO | BF_MAPFILE | BF_ANSI |
BF_COMPILEVIAASM | BF_CHOSENPROJECT | BF_CRTDLL | BF_C99);
if (GetCBField(hwnd, IDC_DEBUGINFO))
workProj.buildFlags |= BF_DEBUGINFO;
if (GetCBField(hwnd, IDC_MAPFILE))
workProj.buildFlags |= BF_MAPFILE;
if (GetCBField(hwnd, IDC_COMPILEVIAASM))
workProj.buildFlags |= BF_COMPILEVIAASM;
if (GetCBField(hwnd, IDC_CHOSENPROJECT))
workProj.buildFlags |= BF_CHOSENPROJECT;
if (GetCBField(hwnd, IDC_SHOWWARNINGS))
workProj.buildFlags |= BF_SHOWWARNINGS;
if (GetCBField(hwnd, IDC_C99))
workProj.buildFlags |= BF_C99;
if (GetCBField(hwnd, IDC_ANSI))
workProj.buildFlags |= BF_ANSI;
/* verify ok always */
SetResult(hwnd, FALSE);
break;
case PSN_APPLY:
/* Page application */
if (workProj.buildFlags &BF_CHOSENPROJECT)
{
PROJLIST *l = projectList;
while (l)
{
l->buildFlags &= ~BF_CHOSENPROJECT;
l = l->next;
}
}
while ((l = strlen(workProj.prebuildsteps)) &&
workProj.prebuildsteps[l - 1] == '\n')
workProj.prebuildsteps[l - 1] = 0;
while ((l = strlen(workProj.postbuildsteps)) &&
workProj.postbuildsteps[l - 1] == '\n')
workProj.postbuildsteps[l - 1] = 0;
workProj.buildFlags |= BF_CHANGEDTARGET;
ProjectDeleteDefines(proj->defines);
*proj = workProj;
workProj.defines = duplicateDefines(proj->defines);
changedProject = TRUE;
break;
case PSN_RESET:
ProjectDeleteDefines(workProj.defines);
break;
case PSN_HELP:
ContextHelp(130);
break;
}
break;
}
return FALSE;
}
// ==============================================================
//
static int FAR PASCAL DebugProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
lparam)
{
NMHDR *nmhead;
int disable_state;
switch (wmsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_NOTIFY:
nmhead = (NMHDR*)lparam;
switch (nmhead->code)
{
case PSN_SETACTIVE:
/* page startup */
disable_state = workProj.buildType != BT_CONSOLE &&
workProj.buildType != BT_WINDOWS;
DisableControl(hwnd, IDC_BREAKWINMAIN, disable_state);
DisableControl(hwnd, IDC_BREAKDLL, disable_state);
DisableControl(hwnd, IDC_DEBUGEXCEPTION, disable_state);
DisableControl(hwnd, IDC_DEBUGTOOLTIPS, disable_state);
DisableControl(hwnd, IDC_EDITCMDLINE, disable_state);
NewFocus(hwnd, IDC_BREAKWINMAIN);
SetCBField(hwnd, IDC_BREAKWINMAIN, workProj.buildFlags
&BF_BREAKWINMAIN ? 1 : 0);
SetCBField(hwnd, IDC_BREAKDLL, workProj.buildFlags &BF_BREAKDLL
? 1 : 0);
SetCBField(hwnd, IDC_DEBUGEXCEPTION, workProj.buildFlags
&BF_DEBUGEXCEPTION ? 1 : 0);
SetCBField(hwnd, IDC_DEBUGTOOLTIPS, workProj.buildFlags
&BF_DEBUGTOOLTIPS ? 1 : 0);
SetEditField(hwnd, IDC_EDITCMDLINE, workProj.cmdline);
break;
case PSN_KILLACTIVE:
/* verify ok always */
workProj.buildFlags &= ~(BF_BREAKWINMAIN | BF_BREAKDLL |
BF_DEBUGEXCEPTION | BF_DEBUGTOOLTIPS);
if (GetCBField(hwnd, IDC_BREAKWINMAIN))
workProj.buildFlags |= BF_BREAKWINMAIN;
if (GetCBField(hwnd, IDC_BREAKDLL))
workProj.buildFlags |= BF_BREAKDLL;
if (GetCBField(hwnd, IDC_DEBUGEXCEPTION))
workProj.buildFlags |= BF_DEBUGEXCEPTION;
if (GetCBField(hwnd, IDC_DEBUGTOOLTIPS))
workProj.buildFlags |= BF_DEBUGTOOLTIPS;
GetEditField(hwnd, IDC_EDITCMDLINE, workProj.cmdline);
SetResult(hwnd, FALSE);
break;
case PSN_APPLY:
/* Page application */
break;
case PSN_HELP:
ContextHelp(132);
break;
}
break;
}
return FALSE;
}
//-------------------------------------------------------------------------
void SetDefineLBEditFields(HWND hwnd, int selected)
{
DEFINES *d = workProj.defines;
if (!d)
{
SendDlgItemMessage(hwnd, IDC_DEFINENAME, WM_SETTEXT, 0, (LPARAM)"");
SendDlgItemMessage(hwnd, IDC_DEFINEVALUE, WM_SETTEXT, 0, (LPARAM)"");
}
else
{
char *buf = (char*)SendDlgItemMessage(hwnd, IDC_DEFINELIST,
LB_GETITEMDATA, selected, (LPARAM)buf);
SendDlgItemMessage(hwnd, IDC_DEFINENAME, WM_SETTEXT, 0, (LPARAM)buf);
while (d)
{
if (d->name == buf)
{
SendDlgItemMessage(hwnd, IDC_DEFINEVALUE, WM_SETTEXT, 0,
(LPARAM)d->value);
break;
}
d = d->next;
}
}
}
//-------------------------------------------------------------------------
void GetDefineText(HWND hwnd, int selected)
{
DEFINES *d = workProj.defines;
char *data;
if (!d)
return ;
data = (char*)SendDlgItemMessage(hwnd, IDC_DEFINELIST, LB_GETITEMDATA,
selected, 0);
while (d)
{
if (d->name == data)
{
SendDlgItemMessage(hwnd, IDC_DEFINEVALUE, WM_GETTEXT, 256, (LPARAM)
d->value);
break;
}
d = d->next;
}
}
//-------------------------------------------------------------------------
static BOOL CALLBACK daDlgProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
lparam)
{
char buf[256], *p;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -