Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
4.6 KiB

  1. //Copyright (c) 1998 - 1999 Microsoft Corporation
  2. #include <assert.h>
  3. #include "precomp.h"
  4. #include "wwwreg.h"
  5. void MoveCaret(int nID, HWND hwnd ) ;
  6. void SetDeleteKeyStatus(int iValue) ;
  7. LRW_DLG_INT CALLBACK
  8. WWWRegProc(
  9. IN HWND hwnd,
  10. IN UINT uMsg,
  11. IN WPARAM wParam,
  12. IN LPARAM lParam
  13. )
  14. {
  15. DWORD dwNextPage = 0;
  16. BOOL bStatus = TRUE;
  17. PageInfo *pi = (PageInfo *)LRW_GETWINDOWLONG( hwnd, LRW_GWL_USERDATA );
  18. DWORD dwReturn;
  19. HWND hwndLSID;
  20. TCHAR * cwLicenseServerID;
  21. TCHAR tcUserValue[ CHARS_IN_BATCH*NUMBER_OF_BATCHES + 1];
  22. switch (uMsg)
  23. {
  24. case WM_INITDIALOG:
  25. pi = (PageInfo *)((LPPROPSHEETPAGE)lParam)->lParam;
  26. LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, (LRW_LONG_PTR)pi );
  27. // Now set the Limit of the data entry fields
  28. SendDlgItemMessage (hwnd, IDC_TXT_TELEINFO1, EM_SETLIMITTEXT, CHARS_IN_BATCH,0);
  29. SendDlgItemMessage (hwnd, IDC_TXT_TELEINFO2, EM_SETLIMITTEXT, CHARS_IN_BATCH,0);
  30. SendDlgItemMessage (hwnd, IDC_TXT_TELEINFO3, EM_SETLIMITTEXT, CHARS_IN_BATCH,0);
  31. SendDlgItemMessage (hwnd, IDC_TXT_TELEINFO4, EM_SETLIMITTEXT, CHARS_IN_BATCH,0);
  32. SendDlgItemMessage (hwnd, IDC_TXT_TELEINFO5, EM_SETLIMITTEXT, CHARS_IN_BATCH,0);
  33. SendDlgItemMessage (hwnd, IDC_TXT_TELEINFO6, EM_SETLIMITTEXT, CHARS_IN_BATCH,0);
  34. SendDlgItemMessage (hwnd, IDC_TXT_TELEINFO7, EM_SETLIMITTEXT, CHARS_IN_BATCH,0);
  35. assert(NUMBER_OF_BATCHES == 7);
  36. SetWindowText(GetDlgItem(hwnd, IDC_TXT_TELEINFO1), _T(""));
  37. SetWindowText(GetDlgItem(hwnd, IDC_TXT_TELEINFO2), _T(""));
  38. SetWindowText(GetDlgItem(hwnd, IDC_TXT_TELEINFO3), _T(""));
  39. SetWindowText(GetDlgItem(hwnd, IDC_TXT_TELEINFO4), _T(""));
  40. SetWindowText(GetDlgItem(hwnd, IDC_TXT_TELEINFO5), _T(""));
  41. SetWindowText(GetDlgItem(hwnd, IDC_TXT_TELEINFO6), _T(""));
  42. SetWindowText(GetDlgItem(hwnd, IDC_TXT_TELEINFO7), _T(""));
  43. break;
  44. case WM_DESTROY:
  45. LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
  46. break;
  47. case WM_COMMAND:
  48. if (HIWORD(wParam) == EN_CHANGE)
  49. {
  50. MoveCaret(LOWORD(wParam), hwnd ) ;
  51. }
  52. if (HIWORD(wParam) == EN_UPDATE)
  53. {
  54. if (GetKeyState(VK_DELETE) == -128)
  55. SetDeleteKeyStatus(1) ;
  56. else
  57. SetDeleteKeyStatus(0) ;
  58. }
  59. break ;
  60. case WM_NOTIFY:
  61. {
  62. LPNMHDR pnmh = (LPNMHDR)lParam;
  63. switch( pnmh->code )
  64. {
  65. case PSN_SETACTIVE:
  66. cwLicenseServerID = GetLicenseServerID();
  67. PropSheet_SetWizButtons( GetParent( hwnd ), PSWIZB_NEXT|PSWIZB_BACK);
  68. // Get the License Server ID, provided by the License Server
  69. hwndLSID = GetDlgItem(hwnd, IDC_LICENSESERVERID);
  70. SetWindowText(hwndLSID, cwLicenseServerID);
  71. SetWindowText(GetDlgItem(hwnd, IDC_WWWINFO), GetWWWSite());
  72. break;
  73. case PSN_WIZNEXT:
  74. // Let us get the Information Entered First & concatenate everything into
  75. // One String
  76. GetDlgItemText(hwnd,IDC_TXT_TELEINFO1, tcUserValue, CHARS_IN_BATCH+1);
  77. GetDlgItemText(hwnd,IDC_TXT_TELEINFO2, tcUserValue+1*CHARS_IN_BATCH, CHARS_IN_BATCH+1);
  78. GetDlgItemText(hwnd,IDC_TXT_TELEINFO3, tcUserValue+2*CHARS_IN_BATCH, CHARS_IN_BATCH+1);
  79. GetDlgItemText(hwnd,IDC_TXT_TELEINFO4, tcUserValue+3*CHARS_IN_BATCH, CHARS_IN_BATCH+1);
  80. GetDlgItemText(hwnd,IDC_TXT_TELEINFO5, tcUserValue+4*CHARS_IN_BATCH, CHARS_IN_BATCH+1);
  81. GetDlgItemText(hwnd,IDC_TXT_TELEINFO6, tcUserValue+5*CHARS_IN_BATCH, CHARS_IN_BATCH+1);
  82. GetDlgItemText(hwnd,IDC_TXT_TELEINFO7, tcUserValue+6*CHARS_IN_BATCH, CHARS_IN_BATCH+1);
  83. // OK, Now we have the Information provided by the user
  84. // Need to validate
  85. if (wcsspn(tcUserValue, BASE24_CHARACTERS) != LR_REGISTRATIONID_LEN)
  86. {
  87. // Extraneous characters in the SPK string
  88. LRMessageBox(hwnd, IDS_ERR_INVALIDLSID, 0);
  89. dwNextPage = IDD_DLG_WWWREG;
  90. }
  91. else
  92. {
  93. dwReturn = GetGlobalContext()->SetLSSPK(tcUserValue);
  94. if (dwReturn != ERROR_SUCCESS)
  95. {
  96. LRMessageBox(hwnd, dwReturn, LRGetLastError());
  97. dwNextPage = IDD_DLG_WWWREG;
  98. }
  99. else
  100. {
  101. dwReturn = ShowProgressBox(hwnd, ProcessThread, 0, 0, 0);
  102. dwNextPage = IDD_PROGRESS;
  103. LRPush(IDD_DLG_WWWREG);
  104. }
  105. }
  106. LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, dwNextPage);
  107. bStatus = -1;
  108. break;
  109. case PSN_WIZBACK:
  110. dwNextPage = LRPop();
  111. LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, dwNextPage);
  112. bStatus = -1;
  113. break;
  114. default:
  115. bStatus = FALSE;
  116. break;
  117. }
  118. }
  119. break;
  120. default:
  121. bStatus = FALSE;
  122. break;
  123. }
  124. return bStatus;
  125. }