in src/native/windows/apps/prunmgr/prunmgr.c [1270:1418]
INT_PTR CALLBACK __startProperty(HWND hDlg,
UINT uMessage,
WPARAM wParam,
LPARAM lParam)
{
LPPSHNOTIFY lpShn;
LPWSTR lpBuf, b;
switch (uMessage) {
case WM_INITDIALOG:
{
startPage = 4;
if (!bpropCentered)
apxCenterWindow(GetParent(hDlg), NULL);
bpropCentered = TRUE;
ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPRMODE), L"exe");
ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPRMODE), L"jvm");
ComboBox_AddStringW(GetDlgItem(hDlg, IDC_PPRMODE), _s_java);
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_start, L"Class")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPRCLASS, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_start, L"Image")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPRIMAGE, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_start, L"WorkingPath")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPRWPATH, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_start, L"Method")) != NULL) {
SetDlgItemTextW(hDlg, IDC_PPRMETHOD, lpBuf);
apxFree(lpBuf);
}
if ((lpBuf = apxRegistryGetMzStrW(hRegserv, APXREG_PARAMSOFTWARE,
_s_start, L"Params", NULL, NULL)) != NULL) {
b = apxMszToCRLFW(hPool, lpBuf);
SetDlgItemTextW(hDlg, IDC_PPRARGS, b);
apxFree(lpBuf);
apxFree(b);
}
if ((lpBuf = apxRegistryGetStringW(hRegserv, APXREG_PARAMSOFTWARE,
_s_start, L"Mode")) != NULL) {
if (!lstrcmpiW(lpBuf, L"jvm")) {
ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPRMODE), 1);
}
else if (!lstrcmpiW(lpBuf, _s_java)) {
ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPRMODE), 2);
EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
}
else {
ComboBox_SetCurSel(GetDlgItem(hDlg, IDC_PPRMODE), 0);
EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
}
apxFree(lpBuf);
}
}
break;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDC_PPRBWPATH:
lpBuf = apxBrowseForFolderW(hDlg, apxLoadResourceW(IDS_PPWPATH, 0));
if (lpBuf) {
SetDlgItemTextW(hDlg, IDC_PPRWPATH, lpBuf);
apxFree(lpBuf);
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 5);
}
break;
case IDC_PPRBIMAGE:
lpBuf = apxGetFileNameW(hDlg, apxLoadResourceW(IDS_PPIMAGE, 0),
apxLoadResourceW(IDS_EXEFILES, 1), NULL,
NULL, TRUE, NULL);
if (lpBuf) {
SetDlgItemTextW(hDlg, IDC_PPRIMAGE, lpBuf);
apxFree(lpBuf);
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 5);
}
break;
case IDC_PPRCLASS:
case IDC_PPRMETHOD:
case IDC_PPRARGS:
case IDC_PPRIMAGE:
case IDC_PPRWPATH:
if (HIWORD(wParam) == EN_CHANGE) {
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 5);
}
break;
case IDC_PPRMODE:
if (HIWORD(wParam) == CBN_SELCHANGE) {
int i;
PropSheet_Changed(GetParent(hDlg), hDlg);
SET_BIT_FLAG(_propertyChanged, 5);
i = ComboBox_GetCurSel(GetDlgItem(hDlg, IDC_PPRMODE));
if (i == 0) {
EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
}
else if (i == 1) {
EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), TRUE);
} else {
EnableWindow(GetDlgItem(hDlg, IDC_PPRCLASS), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRBIMAGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_PPRMETHOD), FALSE);
}
}
break;
}
break;
case WM_NOTIFY:
lpShn = (LPPSHNOTIFY )lParam;
switch (lpShn->hdr.code) {
case PSN_APPLY: /* sent when OK or Apply button pressed */
if (__generalStartSave(hDlg))
PropSheet_UnChanged(GetParent(hDlg), hDlg);
else {
SET_BIT_FLAG(_propertyChanged, 5);
SetWindowLong(hDlg, DWLP_MSGRESULT,
PSNRET_INVALID_NOCHANGEPAGE);
return TRUE;
}
break;
}
break;
default:
break;
}
return FALSE;
}