📄 stdprop.c
字号:
DEFINES **d1;
switch (wmsg)
{
case WM_INITDIALOG:
CenterWindow(hwnd);
return 1;
case WM_COMMAND:
switch (LOWORD(wparam))
{
case IDOK:
SendDlgItemMessage(hwnd, IDC_DFADD, WM_GETTEXT, 256, (LPARAM)
buf);
if (buf[0] == 0)
break;
p = buf;
if (!isalpha(*p) && *p != '_')
{
ExtendedMessageBox("Define", 0, "Invalid Define Name");
break;
}
while (*p)
{
if (!isalnum(*p) && *p != '_')
{
ExtendedMessageBox("Define", 0, "Invalid Define Name");
break;
}
p++;
}
GetDefineText(definehWnd, defineSelected);
d1 = &workProj.defines;
while (*d1)
{
if (!strcmp((*d1)->name, buf))
break;
d1 = &(*d1)->next;
}
if (*d1)
{
defineSelected = SendDlgItemMessage(definehWnd,
IDC_DEFINELIST, LB_FINDSTRINGEXACT, - 1, (LPARAM)buf);
SetDefineLBEditFields(definehWnd, defineSelected);
ExtendedMessageBox("Defines", 0,
"Define already exists, selecting");
}
else
{
*d1 = calloc(sizeof(DEFINES), 1);
if (! *d1)
ExtendedMessageBox("out of memory", 0, "out of memory");
else
{
defineSelected = SendDlgItemMessage(definehWnd,
IDC_DEFINELIST, LB_ADDSTRING, 0, (LPARAM)buf);
strcpy((*d1)->name, buf);
SendDlgItemMessage(definehWnd, IDC_DEFINELIST,
LB_SETITEMDATA, defineSelected, (LPARAM)(*d1)->name)
;
SendDlgItemMessage(definehWnd, IDC_DEFINELIST,
LB_SETCURSEL, defineSelected, 0);
SetDefineLBEditFields(definehWnd, defineSelected);
}
}
EndDialog(hwnd, 1);
break;
case IDCANCEL:
EndDialog(hwnd, 0);
break;
}
break;
case WM_CLOSE:
EndDialog(hwnd, 0);
break;
}
return 0;
}
// ==============================================================
// ==============================================================
//
static int FAR PASCAL DefineProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
lparam)
{
NMHDR *nmhead;
DEFINES *d, **d1;
int disable_state;
char buf[256];
char *data;
switch (wmsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch (HIWORD(wparam))
{
case LBN_SELCHANGE:
GetDefineText(hwnd, defineSelected);
defineSelected = SendDlgItemMessage(hwnd, IDC_DEFINELIST,
LB_GETCURSEL, 0, 0);
SetDefineLBEditFields(hwnd, defineSelected);
break;
}
switch (LOWORD(wparam))
{
case IDC_DEFINEADD:
definehWnd = hwnd;
DialogBox(hInstance, "DEFINEADDDLG", GetParent(hwnd), (DLGPROC)
daDlgProc);
break;
case IDC_DEFINEREMOVE:
d1 = &workProj.defines;
data = (char*)SendDlgItemMessage(hwnd, IDC_DEFINELIST,
LB_GETITEMDATA, defineSelected, 0);
SendDlgItemMessage(hwnd, IDC_DEFINELIST, LB_DELETESTRING,
defineSelected, 0);
while (*d1)
{
if ((*d1)->name == data)
{
DEFINES *d2 = *d1;
(*d1) = (*d1)->next;
free(d2);
break;
}
d1 = &(*d1)->next;
}
if (defineSelected && defineSelected >= SendDlgItemMessage(hwnd,
IDC_DEFINELIST, LB_GETCOUNT, 0, 0))
defineSelected--;
SetDefineLBEditFields(hwnd, defineSelected);
break;
}
break;
case WM_NOTIFY:
nmhead = (NMHDR*)lparam;
switch (nmhead->code)
{
case PSN_SETACTIVE:
/* page startup */
d = workProj.defines;
SendDlgItemMessage(hwnd, IDC_DEFINELIST, LB_RESETCONTENT, 0, 0);
while (d)
{
int i = SendDlgItemMessage(hwnd, IDC_DEFINELIST,
LB_ADDSTRING, 0, (LPARAM)d->name);
SendDlgItemMessage(hwnd, IDC_DEFINELIST, LB_SETITEMDATA, i,
(LPARAM)d->name);
d = d->next;
}
SetDefineLBEditFields(hwnd, defineSelected);
SetCBField(hwnd, IDC_DEFINEPASSTONASM, workProj.defineFlags
&DEFINE_TONASM ? 1 : 0);
SetResult(hwnd, FALSE);
break;
case PSN_KILLACTIVE:
GetDefineText(hwnd, defineSelected);
workProj.defineFlags = GetCBField(hwnd, IDC_DEFINEPASSTONASM) ?
1 : 0;
SetResult(hwnd, FALSE);
break;
case PSN_APPLY:
/* Page application */
break;
case PSN_RESET:
break;
case PSN_HELP:
ContextHelp(134);
break;
}
break;
}
return FALSE;
}
// ==============================================================
//
static int FAR PASCAL TooloptProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
lparam)
{
NMHDR *nmhead;
switch (wmsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_NOTIFY:
nmhead = (NMHDR*)lparam;
switch (nmhead->code)
{
case PSN_SETACTIVE:
/* page startup */
SetEditField(hwnd, IDC_TOCOMPILER, workProj.compileopts);
SetEditField(hwnd, IDC_TOASSEMBLER, workProj.assembleopts);
SetEditField(hwnd, IDC_TOLINKER, workProj.linkopts);
SetEditField(hwnd, IDC_TOLIBRARIAN, workProj.libopts);
break;
case PSN_KILLACTIVE:
/* verify ok always */
GetEditField(hwnd, IDC_TOCOMPILER, workProj.compileopts);
GetEditField(hwnd, IDC_TOASSEMBLER, workProj.assembleopts);
GetEditField(hwnd, IDC_TOLINKER, workProj.linkopts);
GetEditField(hwnd, IDC_TOLIBRARIAN, workProj.libopts);
SetResult(hwnd, FALSE);
break;
case PSN_APPLY:
/* Page application */
break;
case PSN_HELP:
ContextHelp(135);
break;
}
break;
}
return FALSE;
}
// ==============================================================
//
static int FAR PASCAL PrebuildProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
lparam)
{
NMHDR *nmhead;
switch (wmsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_NOTIFY:
nmhead = (NMHDR*)lparam;
switch (nmhead->code)
{
case PSN_SETACTIVE:
SetEditField(hwnd, IDC_PREBUILDLABEL, workProj.prebuildlabel);
SendMessage(GetDlgItem(hwnd, IDC_PREBUILDLABEL), EM_LIMITTEXT,
80, 0);
SetEditField(hwnd, IDC_PREBUILDSTEPS, workProj.prebuildsteps);
/* page startup */
break;
case PSN_KILLACTIVE:
/* verify ok always */
GetEditField(hwnd, IDC_PREBUILDLABEL, workProj.prebuildlabel);
GetEditField(hwnd, IDC_PREBUILDSTEPS, workProj.prebuildsteps);
SetResult(hwnd, FALSE);
break;
case PSN_APPLY:
/* Page application */
break;
case PSN_HELP:
ContextHelp(137);
break;
}
break;
}
return FALSE;
}
// ==============================================================
//
static int FAR PASCAL PostbuildProc(HWND hwnd, UINT wmsg, WPARAM wparam, LPARAM
lparam)
{
NMHDR *nmhead;
switch (wmsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_NOTIFY:
nmhead = (NMHDR*)lparam;
switch (nmhead->code)
{
case PSN_SETACTIVE:
SetEditField(hwnd, IDC_POSTBUILDLABEL, workProj.postbuildlabel);
SendMessage(GetDlgItem(hwnd, IDC_POSTBUILDLABEL), EM_LIMITTEXT,
80, 0);
SetEditField(hwnd, IDC_POSTBUILDSTEPS, workProj.postbuildsteps);
/* page startup */
break;
case PSN_KILLACTIVE:
/* verify ok always */
GetEditField(hwnd, IDC_POSTBUILDLABEL, workProj.postbuildlabel);
GetEditField(hwnd, IDC_POSTBUILDSTEPS, workProj.postbuildsteps);
SetResult(hwnd, FALSE);
break;
case PSN_APPLY:
/* Page application */
break;
case PSN_HELP:
ContextHelp(139);
break;
}
break;
}
return FALSE;
}
// ==============================================================
//
// display the property sheet and return to caller
//
void TargetProperties(HINSTANCE hInst, HWND hwnd, PROJLIST *p)
{
proj = p;
workProj = *p;
defineSelected = 0;
workProj.defines = duplicateDefines(workProj.defines);
// struct for server page
pages[TARGETPROP].dwSize = sizeof(PROPSHEETPAGE);
pages[TARGETPROP].dwFlags = PSP_HASHELP;
pages[TARGETPROP].hInstance = hInst;
pages[TARGETPROP].u.pszTemplate = "TARGETPROPDLG";
pages[TARGETPROP].pfnDlgProc = TargetProc;
pages[TARGETPROP].pszTitle = "General";
pages[DEBUGPROP].dwSize = sizeof(PROPSHEETPAGE);
pages[DEBUGPROP].dwFlags = PSP_HASHELP;
pages[DEBUGPROP].hInstance = hInst;
pages[DEBUGPROP].u.pszTemplate = "DEBUGPROPDLG";
pages[DEBUGPROP].pfnDlgProc = DebugProc;
pages[DEBUGPROP].pszTitle = "Debug";
pages[DEFINEPROP].dwSize = sizeof(PROPSHEETPAGE);
pages[DEFINEPROP].dwFlags = PSP_HASHELP;
pages[DEFINEPROP].hInstance = hInst;
pages[DEFINEPROP].u.pszTemplate = "DEFINEPROPDLG";
pages[DEFINEPROP].pfnDlgProc = DefineProc;
pages[DEFINEPROP].pszTitle = "Defines";
pages[TOOLOPTSPROP].dwSize = sizeof(PROPSHEETPAGE);
pages[TOOLOPTSPROP].dwFlags = PSP_HASHELP;
pages[TOOLOPTSPROP].hInstance = hInst;
pages[TOOLOPTSPROP].u.pszTemplate = "TOOLOPTPROPDLG";
pages[TOOLOPTSPROP].pfnDlgProc = TooloptProc;
pages[TOOLOPTSPROP].pszTitle = "Tool Options";
pages[PREBUILDPROP].dwSize = sizeof(PROPSHEETPAGE);
pages[PREBUILDPROP].dwFlags = PSP_HASHELP;
pages[PREBUILDPROP].hInstance = hInst;
pages[PREBUILDPROP].u.pszTemplate = "PREBUILDPROPDLG";
pages[PREBUILDPROP].pfnDlgProc = PrebuildProc;
pages[PREBUILDPROP].pszTitle = "Pre Build Step";
pages[POSTBUILDPROP].dwSize = sizeof(PROPSHEETPAGE);
pages[POSTBUILDPROP].dwFlags = PSP_HASHELP;
pages[POSTBUILDPROP].hInstance = hInst;
pages[POSTBUILDPROP].u.pszTemplate = "POSTBUILDPROPDLG";
pages[POSTBUILDPROP].pfnDlgProc = PostbuildProc;
pages[POSTBUILDPROP].pszTitle = "Post Build Step";
// struct for property sheet header
header.dwSize = sizeof(PROPSHEETHEADER);
header.dwFlags = PSH_PROPSHEETPAGE | PSH_PROPTITLE | PSH_NOAPPLYNOW /* |
PSH_HASHELP*/;
header.hwndParent = hwnd;
header.hInstance = hInstance;
header.pszCaption = "Target";
header.nPages = TARGET_PROPERTY_SHEET_COUNT;
header.u2.nStartPage = 0;
header.u3.ppsp = &pages[0];
// make the property sheet and exit
PropertySheet(&header);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -