Changeset 10165 for trunk/src/comctl32/propsheet.c
- Timestamp:
- Jul 14, 2003, 4:00:08 PM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/propsheet.c
r10098 r10165 222 222 add_flag(PSH_NOCONTEXTHELP); 223 223 if (string[0] != '\0') 224 224 FIXME("%s\n", string); 225 225 } 226 226 #undef add_flag … … 294 294 memcpy(&psInfo->ppshheader,lppsh,dwSize); 295 295 TRACE("\n** PROPSHEETHEADER **\ndwSize\t\t%ld\ndwFlags\t\t%08lx\nhwndParent\t%p\nhInstance\t%p\npszCaption\t'%s'\nnPages\t\t%d\npfnCallback\t%p\n", 296 297 296 lppsh->dwSize, lppsh->dwFlags, lppsh->hwndParent, lppsh->hInstance, 297 debugstr_a(lppsh->pszCaption), lppsh->nPages, lppsh->pfnCallback); 298 298 299 299 PROPSHEET_UnImplementedFlags(lppsh->dwFlags); … … 301 301 if (HIWORD(lppsh->pszCaption)) 302 302 { 303 #ifdef __WIN32OS2__ 304 int len = MultiByteToWideChar( CP_ACP, 0, lppsh->pszCaption, -1, 0, 0 ); 305 psInfo->ppshheader.pszCaption = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR) ); 306 MultiByteToWideChar(CP_ACP, 0, lppsh->pszCaption, -1, (LPWSTR) psInfo->ppshheader.pszCaption, len); 307 #else 303 308 int len = strlen(lppsh->pszCaption); 304 309 psInfo->ppshheader.pszCaption = HeapAlloc( GetProcessHeap(), 0, (len+1)*sizeof (WCHAR) ); 305 310 MultiByteToWideChar(CP_ACP, 0, lppsh->pszCaption, -1, (LPWSTR) psInfo->ppshheader.pszCaption, len+1); 311 #endif 306 312 /* strcpy( (char *)psInfo->ppshheader.pszCaption, lppsh->pszCaption ); */ 307 313 } … … 507 513 { 508 514 pTitle = pszNull; 509 515 FIXME("Could not load resource #%04x?\n",LOWORD(lppsp->pszTitle)); 510 516 } 511 517 else … … 538 544 { 539 545 if (psInfo->hImageList == 0 ) 540 546 psInfo->hImageList = ImageList_Create(icon_cx, icon_cy, ILC_COLOR, 1, 1); 541 547 542 548 ImageList_AddIcon(psInfo->hImageList, hIcon); … … 826 832 TRACE("Biggest page %ld %ld %ld %ld\n", rc.left, rc.top, rc.right, rc.bottom); 827 833 TRACE(" constants padx=%d, pady=%d, butH=%d, lH=%d\n", 828 834 padding.x, padding.y, buttonHeight, lineHeight); 829 835 830 836 /* Make room */ … … 1092 1098 if (psInfo->hasHelp) 1093 1099 { 1094 1100 idButton = IDHELP; 1095 1101 } 1096 1102 else … … 1098 1104 if (psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD) 1099 1105 { 1100 1106 idButton = IDC_NEXT_BUTTON; 1101 1107 } 1102 1108 else 1103 1109 { 1104 1105 1110 /* hopefully this is ok */ 1111 idButton = IDCANCEL; 1106 1112 } 1107 1113 } … … 1127 1133 1128 1134 if (padding.y < 0) 1129 1135 ERR("padding negative ! Please report this !\n"); 1130 1136 1131 1137 /* this is most probably not correct, but the best we have now */ … … 1255 1261 /* font, if DS_SETFONT set */ 1256 1262 if ((DS_SETFONT & ((istemplateex)? ((MyDLGTEMPLATEEX*)pTemplate)->style : 1257 1263 pTemplate->style))) 1258 1264 { 1259 1265 p+=(istemplateex)?3:1; … … 1268 1274 { 1269 1275 p = (WORD*)(((DWORD)p + 3) & ~3); /* DWORD align */ 1270 1276 1271 1277 /* skip header */ 1272 1278 p += (istemplateex ? sizeof(MyDLGITEMTEMPLATEEX) : sizeof(DLGITEMTEMPLATE))/sizeof(WORD); 1273 1279 1274 1280 /* check class */ 1275 1281 switch ((WORD)*p) 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1282 { 1283 case 0x0000: 1284 p++; 1285 break; 1286 case 0xffff: 1287 TRACE("class ordinal 0x%08lx\n",*(DWORD*)p); 1288 p += 2; 1289 break; 1290 default: 1291 TRACE("class %s\n",debugstr_w((LPCWSTR)p)); 1292 p += lstrlenW( (LPCWSTR)p ) + 1; 1293 break; 1294 } 1289 1295 1290 1296 /* check title text */ 1291 1297 switch ((WORD)*p) 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1298 { 1299 case 0x0000: 1300 p++; 1301 break; 1302 case 0xffff: 1303 TRACE("text ordinal 0x%08lx\n",*(DWORD*)p); 1304 p += 2; 1305 break; 1306 default: 1307 TRACE("text %s\n",debugstr_w((LPCWSTR)p)); 1308 p += lstrlenW( (LPCWSTR)p ) + 1; 1309 break; 1310 } 1305 1311 p += *p + 1; /* Skip extra data */ 1306 1312 --nrofitems; 1307 1313 } 1308 1314 1309 1315 TRACE("%p %p size 0x%08x\n",p, (WORD*)pTemplate,sizeof(WORD)*(p - (WORD*)pTemplate)); 1310 1316 return (p - (WORD*)pTemplate)*sizeof(WORD); 1311 1317 1312 1318 } 1313 1319 … … 1352 1358 RT_DIALOGW); 1353 1359 if(!hResource) 1354 1360 return FALSE; 1355 1361 1356 1362 resSize = SizeofResource(ppshpage->hInstance, hResource); … … 1358 1364 hTemplate = LoadResource(ppshpage->hInstance, hResource); 1359 1365 if(!hTemplate) 1360 1366 return FALSE; 1361 1367 1362 1368 pTemplate = (LPDLGTEMPLATEW)LockResource(hTemplate); … … 1368 1374 if (!temp) 1369 1375 return FALSE; 1370 1376 1371 1377 TRACE("copying pTemplate %p into temp %p (%ld)\n", pTemplate, temp, resSize); 1372 1378 memcpy(temp, pTemplate, resSize); … … 1402 1408 1403 1409 hwndPage = CreateDialogIndirectParamW(ppshpage->hInstance, 1404 1405 1406 1407 1410 pTemplate, 1411 hwndParent, 1412 ppshpage->pfnDlgProc, 1413 (LPARAM)ppshpage); 1408 1414 /* Free a no more needed copy */ 1409 1415 if(temp) … … 1428 1434 padding = PROPSHEET_GetPaddingInfoWizard(hwndParent, psInfo); 1429 1435 TRACE("setting page %08lx, rc (%ld,%ld)-(%ld,%ld) w=%d, h=%d, padx=%d, pady=%d\n", 1430 1431 1436 (DWORD)hwndPage, rc.left, rc.top, rc.right, rc.bottom, 1437 pageWidth, pageHeight, padding.x, padding.y); 1432 1438 SetWindowPos(hwndPage, HWND_TOP, 1433 1434 1435 1439 rc.left + padding.x/2, 1440 rc.top + padding.y/2, 1441 pageWidth, pageHeight, 0); 1436 1442 } 1437 1443 else { … … 1444 1450 pageHeight = rc.bottom - rc.top; 1445 1451 TRACE("setting page %08lx, rc (%ld,%ld)-(%ld,%ld) w=%d, h=%d\n", 1446 1447 1452 (DWORD)hwndPage, rc.left, rc.top, rc.right, rc.bottom, 1453 pageWidth, pageHeight); 1448 1454 SetWindowPos(hwndPage, HWND_TOP, 1449 1450 1455 rc.left, rc.top, 1456 pageWidth, pageHeight, 0); 1451 1457 } 1452 1458 … … 1897 1903 static BOOL PROPSHEET_SetCurSel(HWND hwndDlg, 1898 1904 int index, 1899 1905 int skipdir, 1900 1906 HPROPSHEETPAGE hpage 1901 1907 ) 1902 1908 { 1903 1909 PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr); … … 1921 1927 1922 1928 if (hwndTabControl) 1923 1929 SendMessageW(hwndTabControl, TCM_SETCURSEL, index, 0); 1924 1930 1925 1931 psn.hdr.code = PSN_SETACTIVE; … … 1939 1945 index+=skipdir; 1940 1946 if (index < 0) { 1941 1942 1943 1947 index = 0; 1948 FIXME("Tried to skip before first property sheet page!\n"); 1949 break; 1944 1950 } 1945 1951 if (index >= psInfo->nPages) { 1946 1947 1948 1952 FIXME("Tried to skip after last property sheet page!\n"); 1953 index = psInfo->nPages-1; 1954 break; 1949 1955 } 1950 1956 } … … 1996 2002 WCHAR szTitle[256]; 1997 2003 MultiByteToWideChar(CP_ACP, 0, lpszText, -1, 2004 #ifdef __WIN32OS2__ 2005 szTitle, sizeof( szTitle ) / sizeof( WCHAR )); 2006 #else 1998 2007 szTitle, sizeof szTitle); 2008 #endif 1999 2009 PROPSHEET_SetTitleW(hwndDlg, dwStyle, szTitle); 2000 2010 } … … 2010 2020 static void PROPSHEET_SetTitleW(HWND hwndDlg, DWORD dwStyle, LPCWSTR lpszText) 2011 2021 { 2012 PropSheetInfo* 2013 WCHAR 2022 PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwndDlg, PropSheetInfoStr); 2023 WCHAR szTitle[256]; 2014 2024 2015 2025 TRACE("'%s' (style %08lx)\n", debugstr_w(lpszText), dwStyle); … … 2415 2425 psInfo, n)) 2416 2426 { 2417 2418 2419 2420 2427 if (lppsh->dwFlags & PSH_PROPSHEETPAGE) 2428 DestroyPropertySheetPage(psInfo->proppage[n].hpage); 2429 n--; 2430 psInfo->nPages--; 2421 2431 } 2422 2432 } … … 2459 2469 psInfo, n)) 2460 2470 { 2461 2462 2463 2464 2471 if (lppsh->dwFlags & PSH_PROPSHEETPAGE) 2472 DestroyPropertySheetPage(psInfo->proppage[n].hpage); 2473 n--; 2474 psInfo->nPages--; 2465 2475 } 2466 2476 } … … 2623 2633 case IDOK: 2624 2634 case IDC_APPLY_BUTTON: 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2635 { 2636 HWND hwndApplyBtn = GetDlgItem(hwnd, IDC_APPLY_BUTTON); 2637 2638 if (PROPSHEET_Apply(hwnd, wID == IDOK ? 1: 0) == FALSE) 2639 break; 2640 2641 if (wID == IDOK) 2642 { 2643 PropSheetInfo* psInfo = (PropSheetInfo*) GetPropW(hwnd, 2644 PropSheetInfoStr); 2645 int result = TRUE; 2646 2647 if (psInfo->restartWindows) 2648 result = ID_PSRESTARTWINDOWS; 2649 2650 /* reboot system takes precedence over restart windows */ 2651 if (psInfo->rebootSystem) 2652 result = ID_PSREBOOTSYSTEM; 2653 2654 if (psInfo->isModeless) 2655 psInfo->activeValid = FALSE; 2656 else 2657 EndDialog(hwnd, result); 2658 } 2659 else 2660 EnableWindow(hwndApplyBtn, FALSE); 2661 2662 break; 2663 } 2654 2664 2655 2665 case IDC_BACK_BUTTON: 2656 2657 2666 PROPSHEET_Back(hwnd); 2667 break; 2658 2668 2659 2669 case IDC_NEXT_BUTTON: 2660 2661 2670 PROPSHEET_Next(hwnd); 2671 break; 2662 2672 2663 2673 case IDC_FINISH_BUTTON: 2664 2665 2674 PROPSHEET_Finish(hwnd); 2675 break; 2666 2676 2667 2677 case IDCANCEL: 2668 2669 2678 PROPSHEET_Cancel(hwnd, 0); 2679 break; 2670 2680 2671 2681 case IDHELP: 2672 2673 2682 PROPSHEET_Help(hwnd); 2683 break; 2674 2684 } 2675 2685 … … 2684 2694 { 2685 2695 TRACE("hwnd=%p msg=0x%04x wparam=%x lparam=%lx\n", 2686 2696 hwnd, uMsg, wParam, lParam); 2687 2697 2688 2698 switch (uMsg) … … 2757 2767 if (psInfo->useCallback) 2758 2768 (*(psInfo->ppshheader.pfnCallback))(hwnd, 2759 2769 PSCB_INITIALIZED, (LPARAM)0); 2760 2770 2761 2771 idx = psInfo->active_page; … … 2859 2869 msgResult = PROPSHEET_SetCurSel(hwnd, 2860 2870 (int)wParam, 2861 2871 1, 2862 2872 (HPROPSHEETPAGE)lParam); 2863 2873 }
Note:
See TracChangeset
for help on using the changeset viewer.