[win32] PropertySheet() et PSM_CHANGED ...

PropertySheet() et PSM_CHANGED ... [win32] - C - Programmation

Marsh Posté le 05-05-2006 à 19:05:41    

Bonjour,
Le bouton "Appliquer", quand je suis sur le dialogue 2 ne s'active pas, alors que dans le dialogue 1, cela fonctionne bien ...
Je ne vois pas pourquoi .... quelqu'un aurait une idée ?
J'ai fait un bout de code ...
Merci d'avance.

Code :
  1. #include "winproc.h"
  2. #include "Prsht.h"
  3. HINSTANCE hInst;
  4. HWND  hWnd;
  5. HWND  hDial;
  6. BOOL CALLBACK Dial1DlgProc (HWND, UINT, UINT, LONG);
  7. BOOL CALLBACK Dial2DlgProc (HWND, UINT, UINT, LONG);
  8. void DoPropertySheet(HWND);
  9. char szAppName[]="Modification des Proprietes";
  10. LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
  11. #define lpnmHDR ((NMHDR *)lParam)
  12. HDC         hdc ;
  13. PAINTSTRUCT ps ;
  14.     switch (message) {
  15.    case WM_CREATE :
  16.            
  17.             return 0;
  18.        case WM_PAINT :
  19.             hdc = BeginPaint (hwnd, &ps) ;
  20.   TextOut (hdc, 340, 80, "Test - 2006", 11);
  21.      EndPaint (hwnd, &ps) ;
  22.         return 0;
  23.                        
  24.        case WM_COMMAND:
  25.             switch (wParam)
  26.   {
  27.              case IDD_DL1:
  28.                 DoPropertySheet(hwnd);
  29.                 return 0 ;
  30.            
  31.   }
  32.             return 0 ;
  33.       case WM_DESTROY:
  34.             PostQuitMessage(0);
  35.             return 0;
  36.     }
  37.     return DefWindowProc(hwnd, message, wParam, lParam);
  38. }
  39. ////////////////////////////////////////////////////////////////////////////////////////
  40. BOOL CALLBACK Dial1DlgProc (HWND hwnd, UINT message, UINT wParam, LONG lParam)
  41. {
  42.        switch (message) {
  43.          case WM_INITDIALOG:
  44.     return TRUE;
  45.    
  46.          case WM_NOTIFY:
  47.               switch (lpnmHDR->code) {
  48.                
  49.                 case PSN_SETACTIVE:
  50. //                     MessageBox(NULL, "PSN_SETACTIVE", "Dial1DlgProc", MB_OK|MB_ICONINFORMATION);
  51.      break;
  52.                 case PSN_KILLACTIVE:
  53. //                     MessageBox(NULL, "PSN_KILLACTIVE", "Dial1DlgProc", MB_OK|MB_ICONINFORMATION);
  54.      break;
  55.                 case PSN_APPLY:
  56. //                     MessageBox(NULL, "PSN_APPLY", "Dial1DlgProc", MB_OK|MB_ICONINFORMATION);
  57.      break;
  58.                 case PSN_RESET:
  59. //                     MessageBox(NULL, "PSN_RESET", "Dial1DlgProc", MB_OK|MB_ICONINFORMATION);
  60.      break;
  61.                 case PSN_HELP:
  62. //                     MessageBox(NULL, "PSN_HELP", "Dial1DlgProc", MB_OK|MB_ICONINFORMATION);
  63.      break;
  64.     }
  65.          case WM_COMMAND:
  66.            if (HIWORD (wParam) == EN_CHANGE) {
  67.              SendMessage (GetParent(hwnd), PSM_CHANGED, 0,0);
  68.              break;
  69.     }
  70.            switch (wParam)
  71.     {
  72.            case IDOK1:
  73.              MessageBox(NULL, "IDOK1", "Dial1DlgProc", MB_OK|MB_ICONINFORMATION);
  74.              return 0 ;
  75.     }
  76.    }
  77.        return 0;
  78. }
  79. ////////////////////////////////////////////////////////////////////////////////////////
  80. BOOL CALLBACK Dial2DlgProc (HWND hwnd, UINT message, UINT wParam, LONG lParam)
  81. {
  82.    switch (message) {
  83.          case WM_INITDIALOG:
  84.     return TRUE;
  85.          case WM_NOTIFY:
  86.            
  87.               switch (lpnmHDR->code) {
  88.                
  89.                 case PSN_SETACTIVE:
  90. //                     MessageBox(NULL, "PSN_SETACTIVE", "Dial2DlgProc", MB_OK|MB_ICONINFORMATION);
  91.      break;
  92.                 case PSN_KILLACTIVE:
  93. //                     MessageBox(NULL, "PSN_KILLACTIVE", "Dial2DlgProc", MB_OK|MB_ICONINFORMATION);
  94.      break;
  95.                 case PSN_APPLY:
  96. //                     MessageBox(NULL, "PSN_APPLY", "Dial2DlgProc", MB_OK|MB_ICONINFORMATION);
  97.      break;
  98.                 case PSN_RESET:
  99. //                     MessageBox(NULL, "PSN_RESET", "Dial1DlgProc", MB_OK|MB_ICONINFORMATION);
  100.      break;
  101.                 case PSN_HELP:
  102. //                     MessageBox(NULL, "PSN_HELP", "Dial2DlgProc", MB_OK|MB_ICONINFORMATION);
  103.      break;
  104.     }
  105.          case WM_COMMAND:
  106.               if (HIWORD (wParam) == EN_CHANGE) {
  107.                 SendMessage (GetParent(hwnd), PSM_CHANGED, 0,0);
  108.                 break;
  109.     }
  110.    }
  111.        return 0;
  112. }
  113. void DoPropertySheet(HWND hwndOwner)
  114. {
  115.     PROPSHEETPAGE psp[2];
  116.     PROPSHEETHEADER psh;
  117.     psp[0].dwSize = sizeof(PROPSHEETPAGE);
  118.     psp[0].dwFlags = PSP_USETITLE;
  119.     psp[0].hInstance = hInst;
  120.     psp[0].pszTemplate = MAKEINTRESOURCE(IDD_DIALOG1);
  121.     psp[0].pszIcon = NULL;
  122.     psp[0].pfnDlgProc = Dial1DlgProc;
  123.     psp[0].pszTitle = "Page 1";
  124.     psp[0].lParam = 0;
  125.     psp[0].pfnCallback = NULL;
  126.    
  127.     psp[1].dwSize = sizeof(PROPSHEETPAGE);
  128.     psp[1].dwFlags = PSP_USETITLE;
  129.     psp[1].hInstance = hInst;
  130.     psp[1].pszTemplate = MAKEINTRESOURCE(IDD_DIALOG2);
  131.     psp[1].pszIcon = NULL;
  132.     psp[1].pfnDlgProc = Dial2DlgProc;
  133.     psp[1].pszTitle = "Page 2";
  134.     psp[1].lParam = 0;
  135.     psp[1].pfnCallback = NULL;
  136.    
  137.     psh.dwSize = sizeof(PROPSHEETHEADER);
  138.     psh.dwFlags = PSH_PROPSHEETPAGE;
  139.     psh.hwndParent = hwndOwner;
  140.     psh.hInstance = hInst;
  141.     psh.pszIcon = NULL;
  142.     psh.pszCaption = (LPSTR) "Titre de la boite de dialogue";
  143.     psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
  144.     psh.nStartPage = 0;
  145.     psh.ppsp = (LPCPROPSHEETPAGE) &psp;
  146.     psh.pfnCallback = NULL;
  147.     PropertySheet(&psh);
  148.     return;
  149. }


Reply

Marsh Posté le 05-05-2006 à 19:05:41   

Reply

Marsh Posté le 07-05-2006 à 22:48:52    

Pour Win32, voir sur les newsgroups des experts :
 
news://comp.os.ms-windows.programmer.win32
news://fr.comp.os.ms-windows.programmation

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed