spunk62 | Re,
j'ai créé un nouveau projet simple avec une listview (listview déclarer dans case WM_INITDIALOG le code fonctionne, après j'ai créé une procédure listview dans un autre fichier "procedure.cpp" (comme dans mon code) sa ne fonctionnait pu, solution:
déclarer la listview en dehors de la procédure (la déclarer dans INITDIALOG).
Le problème c'est que je charge un fichier puis j'affiche la listview garce au menu (ex: outils\tableau)
voici mon code:
Code :
- #include <windows.h>
- #include <commctrl.h>
- #include "resource.h"
- #include "procedure.h"
- #include <commctrl.h>
- HINSTANCE hInst;
- bool tab=false;
- bool TabListA=false;
- static LVITEM lvi;
- static LVHITTESTINFO lvhti;
- static Plot *P1;
- // Déclaration des fonctions du module.
- static HWND Childtab;
- static HWND ChildAnalyse;
- static HWND ChildIndic;
- static int CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM);
- static int MsgInitDialog (HWND);
- static int MsgNotify (WPARAM, LPARAM);
- static int MsgCommand (WPARAM, LPARAM);
- static int CALLBACK Childtab_DlgProc(HWND, UINT, WPARAM, LPARAM);
- static int CALLBACK ChildAnalyse_DlgProc(HWND, UINT, WPARAM, LPARAM);
- static int CALLBACK ChildIndic_DlgProc(HWND, UINT, WPARAM, LPARAM);
- static void UpdateChildTab(HWND);
- static INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
- //Dialog principale
- int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
- {
- hInst=hInstance;
- return DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAIN),NULL,DlgProc);
- }
- //MainDlgProc :
- int CALLBACK DlgProc(HWND hDlg,UINT message, WPARAM wParam, LPARAM lParam)
- {
- static int cx,cy;
- static Plot *P2,*P3;
- int wmId, wmEvent;
- static HWND hlistview,hlistviewA;
- switch (message)
- {
- case WM_SIZE:
- cx = LOWORD (lParam) ;
- cy = HIWORD (lParam) ;
- break;
- case WM_INITDIALOG :
- return MsgInitDialog(hDlg);
- case WM_DESTROY :
- {
- // destruction des dialogues enfants
- DestroyWindow(Childtab);
- DestroyWindow(ChildAnalyse);
- DestroyWindow(ChildIndic);
- return 0;
- }
- case WM_NOTIFY :
- {
- LPNMITEMACTIVATE lpnmitem;
- lpnmitem = (LPNMITEMACTIVATE) lParam;
- if(lpnmitem->hdr.hwndFrom == hlistviewA && lpnmitem->hdr.code==NM_CLICK)
- {
- DialogBox(hInst, MAKEINTRESOURCE(IDD_CHOIX), hDlg,About);
- return 0;
- }
- // mise à jour de l'affichage des dialogues enfants
- LPNMHDR lpnmhdr = (LPNMHDR) lParam;
- if(lpnmhdr->code == TCN_SELCHANGE)
- {
- UpdateChildTab(hDlg);
- return 0;
- }
- }
- break;
- case WM_COMMAND:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
-
- // Analyse les sélections de menu :
- switch (wmId)
- {
- case ID_FICHIER_QUITTER:
- EndDialog(hDlg,0);
- break;
- case ID_FICHIER_OUVRIR:
- chargertableau (hDlg,hlistview,ChildAnalyse);
- break;
- case ID_OUTILS_TABLEAU:
- listview (hlistview,Childtab);
- break;
- case ID_OUTILS_ANALYSE:
- TabListA=true;
- listviewA (hlistviewA,ChildAnalyse);
- break;
- case ID_OUTILS_INDICATEUR:
- break;
- }
- break;//break du switch
- break;//break du WM_COMMAND
- case WM_CLOSE:
- //Fermer la boite de dialogue:
- EndDialog(hDlg,0);
- break;
- }
- return 0;
- }
- int MsgInitDialog(HWND hDlg)
- {
- Childtab = CreateDialog(hInst, MAKEINTRESOURCE(IDD_TAB),
- hDlg, Childtab_DlgProc);
- ChildAnalyse = CreateDialog(hInst, MAKEINTRESOURCE(IDD_ANALYSE),
- hDlg, ChildAnalyse_DlgProc);
- ChildIndic = CreateDialog(hInst, MAKEINTRESOURCE(IDD_INDICATEUR),
- hDlg, ChildIndic_DlgProc);
- // ajout des onglets
- HWND hTabCtrl = GetDlgItem(hDlg, IDC_TAB1);
- TCITEM tci;
- tci.mask = TCIF_TEXT;
- tci.pszText = "Raport ";
- SendMessage(hTabCtrl, TCM_INSERTITEM, 0, (LPARAM) &tci);
- tci.pszText = "Analyse ";//hlistviewA
- SendMessage(hTabCtrl, TCM_INSERTITEM, 1, (LPARAM) &tci);
- tci.pszText = "Taux";
- SendMessage(hTabCtrl, TCM_INSERTITEM, 2, (LPARAM) &tci);
- tci.pszText = "Pareto";
- SendMessage(hTabCtrl, TCM_INSERTITEM, 3, (LPARAM) &tci);
- // détermination du rectangle où placer les dialogues enfants à partir du rectangle
- // du tabctrl, conversion dans le systemde coordonnée de la boîte de dialogue parente
- RECT rcTabCtrl;
- GetWindowRect(hTabCtrl, &rcTabCtrl);
- SendMessage(hTabCtrl, TCM_ADJUSTRECT, FALSE, (LPARAM) &rcTabCtrl);
- MapWindowPoints(NULL, hDlg, (LPPOINT) &rcTabCtrl, 2);
- // taille du dialogue enfant
- RECT rcChildTab;
- GetWindowRect(Childtab, &rcChildTab);
- int x = (rcTabCtrl.left+rcTabCtrl.right)/2 - (rcChildTab.right-rcChildTab.left)/2;
- int y = (rcTabCtrl.top+rcTabCtrl.bottom)/2 - (rcChildTab.bottom-rcChildTab.top)/2;
- SetWindowPos(Childtab, NULL, x, y, 0, 0, SWP_NOZORDER|SWP_NOSIZE|SWP_NOREDRAW);
- RECT rcChildAnalyse;
- GetWindowRect(ChildAnalyse, &rcChildAnalyse);
- int x1 = (rcTabCtrl.left+rcTabCtrl.right)/2 - (rcChildAnalyse.right-rcChildAnalyse.left)/2;
- int y1 = (rcTabCtrl.top+rcTabCtrl.bottom)/2 - (rcChildAnalyse.bottom-rcChildAnalyse.top)/2;
- SetWindowPos(ChildAnalyse, NULL, x, y, 0, 0, SWP_NOZORDER|SWP_NOSIZE|SWP_NOREDRAW);
- RECT rcChildIndic;
- GetWindowRect(ChildIndic, &rcChildIndic);
- int x2 = (rcTabCtrl.left+rcTabCtrl.right)/2 - (rcChildIndic.right-rcChildIndic.left)/2;
- int y2 = (rcTabCtrl.top+rcTabCtrl.bottom)/2 - (rcChildIndic.bottom-rcChildIndic.top)/2;
- SetWindowPos(ChildIndic, NULL, x, y, 0, 0, SWP_NOZORDER|SWP_NOSIZE|SWP_NOREDRAW);
- // affichage de l'onglet un et mise à jour
- SendMessage(hTabCtrl, TCM_SETCURSEL, 0, 0);
- UpdateChildTab(hDlg);
- return TRUE;
- }
- // UpdateChildTab :
- void UpdateChildTab(HWND hDlg)
- {
- // afficher le dialogue correspondant à l'onglet sélectionné et masquer les autres
- HWND hTabCtrl = GetDlgItem(hDlg, IDC_TAB1);
- int nSelected = SendMessage(hTabCtrl, TCM_GETCURSEL, 0, 0);
- ShowWindow(Childtab, (0==nSelected)? SW_SHOW : SW_HIDE);
- ShowWindow(ChildAnalyse, (1==nSelected)? SW_SHOW : SW_HIDE);
- ShowWindow(ChildIndic, (2==nSelected)? SW_SHOW : SW_HIDE);
- }
- int CALLBACK Childtab_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- return 0;
- }
- int CALLBACK ChildAnalyse_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- return 0;
- }
- int CALLBACK ChildIndic_DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- return 0;
- }
- INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
- {
- UNREFERENCED_PARAMETER(lParam);
- switch (message)
- {
- case WM_INITDIALOG:
- return (INT_PTR)TRUE;
- case WM_COMMAND:
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, LOWORD(wParam));
- return (INT_PTR)TRUE;
- }
- break;
- }
- return (INT_PTR)FALSE;
- }
|
J'ai vraiment besoin de votre aide ! merci Message édité par spunk62 le 19-06-2009 à 11:49:51
|