begin process at 2010 02 10 07:55:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

problème Listview, notification, imagelist


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème Listview, notification, imagelist

mercredi 29 avril 2009 à 14:36:51 | problème Listview, notification, imagelist

juju116

voilà j'ai créer ma listview j'ai en fin un truc de moi meme, mais bon j'avais de l'aide quand meme seulement  ya un hic donc si l'on pouvait m'aider, j'ai beau essayer de cherché je trouve pas :(
erreurs:

C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:48: error: `LPNMLVGETINFOTIPA' was not declared in this scope
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:48: error: expected `;' before "nmInfoTip"
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:52: error: `nmInfoTip' was not declared in this scope
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:52: error: expected `;' before "lParam"
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:67: error: `hWnd' was not declared in this scope
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp: In function `int createImgList()':
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:83: error: a function-definition is not allowed here before '{' token
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:116: error: a function-definition is not allowed here before '{' token
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:140: error: a function-definition is not allowed here before '{' token
C:\Documents and Settings\julian\Bureau\projet\prog\nouveau programme\main.cpp:160: error: expected `}' at end of input
Process terminated with status 1 (0 minutes, 0 seconds)
9 errors, 0 warnings
 
mon code:
#include <windows.h>
#include <commctrl.h>
#include <tchar.h>
#define _WIN32_IE 0x0400

/*variables, Handles */
HINSTANCE _hThisInstance;
HWND _hWnd;
HWND _hListView;
LPTSTR _lpAppName = _T("mon programme");
DWORD _nStatusBarHeight;

/*traitement des messages*/
int CALLBACK windowsprocedure(HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam)
{
  /*Info sur les tailles min et max de la fenêtre*/
  MINMAXINFO *lpMinMaxInfo;

  /*Taille de la zone cliente*/
  RECT clientRect;

  /*retour de la fonction*/
  long nResult;
  nResult = 0;

  /*Pour savoir si le message est traité*/
  int bHandled;
  bHandled = 0;

   switch (nMsg)
  {
    case WM_GETMINMAXINFO:
      lpMinMaxInfo = (MINMAXINFO*)lParam;
      lpMinMaxInfo->ptMinTrackSize.x = 300;
      lpMinMaxInfo->ptMinTrackSize.y = 200;
      bHandled = 1;
      break;

      /* On ajuste la taille de la listview */
      GetClientRect(_hWnd, &clientRect);
      SetWindowPos(_hListView, 0, 0, 0,
                   clientRect.right - clientRect.left,
                   clientRect.bottom - clientRect.top - _nStatusBarHeight,
                   SWP_NOMOVE | SWP_NOZORDER);
    break;

    /*affichage de la notification*/
    LPNMLVGETINFOTIP nmInfoTip
    case WM_NOTIFY:
    if (((NMHDR*)lParam)->code == LVN_GETINFOTIP);
    {
    nmInfoTip = (LPNMLVGETINFOTIP)lParam;
    MessageBox(_hWnd, nmInfoTip->pszText, "informations disponibles", MB_OK);
    }
   break;

   case WM_DESTROY:
      /* On signale que le thread va s'arrêter */
      PostQuitMessage(0);
      bHandled = 1;
   break;


 }

  if (! bHandled)
    nResult = DefWindowProc(hWnd, nMsg, wParam, lParam);
  return nResult;
}

/*cration de la liste d'images*/
int createImgList()
{

     HIMAGELIST hImageList;

     hImageList = ImageList_Create(GetSystemMetrics(SM_CXICON),
                                GetSystemMetrics(SM_CYICON),
                                ILC_MASK, 1, 1);


int createItems()
 {
 LVITEM item;

 /*ajout d'icones*/
 LVItem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
 LVItem.iItem = Item;
 LVItem.iSubItem = 0;
 LVItem.pszText = FichDossARec.NomFichDoss;
 LVItem.cchTextMax = sizeof(FichDossARec.NomFichDoss);
 LVItem.lParam = (LPARAM)IndexExt;
 LVItem.iImage = 2;

/*initialisation*/
 {
 lvi.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
 lvi.state = 0;
 lvi.stateMask = 0;
 lvi.cchTextMax = strlen(text);
 lvi.pszText = text;
 lvi.iImage = 0;
 lvi.iItem = 0;
 lvi.iSubItem = 0;

 SendMessage(ListViewhWnd[2], LVM_INSERTITEM, 0, (LPARAM)&LVItem);
 }

if (! hImageList) goto the_end;
the_end :
return 0 ;
}

/*ajout de la listview*/
int CreateListView()
{
_hListView = CreateWindowEx(0, WC_LISTVIEW, (LPCTSTR)NULL,WS_CHILD | LVS_ICON | WS_VISIBLE,0, 0, 0, 0,_hWnd, NULL, _hThisInstance, NULL);
if (! _hListView) goto the_end;
/*handle pour les tooltips*/
HWND hTips;

/*envoie des message lors du survol des items */
SendMessage(_hListView, LVM_SETEXTENDEDLISTVIEWSTYLE, LVS_EX_INFOTIP, LVS_EX_INFOTIP);

/* Pour que WM_NOTIFY arrivent instantanément lors du survol d'un item */
hTips = (HWND)SendMessage(_hListView, LVM_GETTOOLTIPS, 0, 0);
SendMessage(hTips, TTM_SETDELAYTIME, TTDT_INITIAL, 1);
SendMessage(hTips, TTM_SETDELAYTIME, TTDT_RESHOW, 1);


  if (! CreateImgList()) goto the_end;
  if (! CreateItems()) goto the_end;

  the_end :
  return 0 ;
}
/*fenètre principale*/
int WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
LPSTR lignesDeCommande, int modeDAffichage)
{
    HWND fenetrePrincipale;
    MSG message;
    WNDCLASS classeFenetre;

    classeFenetre.style = 0;
    classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
    classeFenetre.cbClsExtra = 0;
    classeFenetre.cbWndExtra = 0;
    classeFenetre.hInstance = NULL;
    classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
    classeFenetre.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
    classeFenetre.lpszMenuName =  0;
    classeFenetre.lpszClassName = "_lpAppName";

    /*affichage de la fenetre*/
    ShowWindow(fenetrePrincipale, modeDAffichage);
    UpdateWindow(fenetrePrincipale);

    return 0 ;
}
samedi 2 mai 2009 à 22:15:32 | Re : problème Listview, notification, imagelist

aardman

Membre Club
Salut,
tu as un "LPNMLVGETINFOTIP nmInfoTip" sans ; declaré un peu n'importe ou... déclare le au début de ta fonction.
vendredi 8 mai 2009 à 21:50:51 | Re : problème Listview, notification, imagelist

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Mais c'est mon petit juju116 !

Au fait rien à voir, mais tu aurais pas de la famille qui fait aussi de l'info sur Annecy (Rapport à ton nom qui était dans l'adresse mail que tu m'a filé par MP) ?

Outre les remarques judicieuses de aardman, il reste un petit problème.

En effet, si tu regardes le début de mon code :

#ifdef UNICODE
#define _UNICODE
#endif /* UNICODE */

/* Requis pour LVN_GETINFOTIP */
#define _WIN32_IE 0x0400

#include <windows.h>
#include <tchar.h>
#include <commctrl.h>
Il se trouve que les lignes ci-dessus ne sont pas tout à fait ordonnées par hasard. Bon la partie unicode me permet juste de me faciliter le passage en MBCS/UNICODE en me permettant d'avoir qu'un flag à changer. UNICODE est utilisé dans windows.h, et _UNICODE dans tchar.h.

Ensuite, un jolie commentaire (En rapport avec GETINFOTIP, tiens, curieux), et finalement les includes.

Mais à quoi sert donc ce define ? En fait, il me permet de dire que je part du principe que les PCs où mon application va tourner incluront forcément Internet Explorer en version 4 minimum. En effet, pour bénéficier de LVN_GETINFOTIP, il est précisé dans la msdn que IE 4 est requis.

Sachant cela, commctrl.h va pouvoir me fournir plus de déclarations, toutes celles disponibles quand IE 4 est installé. En effet, quelque part dans commctrl.h, on trouve :

#if (_WIN32_IE >= 0x0400)
typedef struct tagNMLVGETINFOTIPA
{
    NMHDR hdr;
    DWORD dwFlags;
    LPSTR pszText;
    int cchTextMax;
    int iItem;
    int iSubItem;
    LPARAM lParam;
} NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
typedef struct tagNMLVGETINFOTIPW
{
    NMHDR hdr;
    DWORD dwFlags;
    LPWSTR pszText;
    int cchTextMax;
    int iItem;
    int iSubItem;
    LPARAM lParam;
} NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
#endif /* _WIN32_IE >= 0x0400 */

Pourquoi cela fonctionne-t-il avec mon code et pas avec le tien ?

Car tu inclus commctrl.h avant le define. Donc lorsque le préprocesseur préprocesse commctrl.h, _WIN32_IE n'est pas encore définit, donc le code de LPNMLVGETINFOTIPA est "oublié". Et donc quand tu t'en sers dans ton code, il n'est pas défini.

Bilan il faut que tu inverses ton define et tes includes.


Cette discussion est classée dans : programme, and, hwnd, documents, classefenetre


Répondre à ce message

Sujets en rapport avec ce message

Problème pour les fonctions winsock [ par darkstorm ] Bonjour tout le monde,voici la source de mon fichier Cinclude SOCKET s1,s2;WSADATA WSAdata;struct sockaddr_in in1,in2;void attendConnexion(){ int keyboard [ par ToToL ] J'ai créé un programme sauf que mon probleme est la vitesse de repetition des touche que je voudrai faire instantanné car sinon j'ai il y a un "blanc" Interface Win32 GDI : créer un polygone [ par snakehill ] Bonjour !!Je me lance dans la programmation graphique avec Visual C++, mais je suis confronté à une sorte d epetit problême :Le dessin de polygones .. encore un probleme de lien opengl [ par seichettmorru ] je mets bien #include j'ai aussi opengl32.dll dans system32"Compilateur: Default compilerBuilding Makefile: "C:\Documents and Settings\Mathias\Mes doc problème de include fort embetant... [ par gregorian ] Bonjour, Voila je suis entrain de dvp un projet pour l'école (et oui je suis toujours au cour...)En dev c++ J'ai remarqué qu'il y avait des problèmes Excel et MFC [ par TeLeTUbIz ] Bonjour, je voudrais ecrire dans excel en utilisant les MFC. J'ai suivi l'exemple de maevasa : http://www.cppfrance.com/code.aspx?id=24952 . Ca march n'import quel nom d'administrateur [ par unionx ] salut tout le monde je voudrer savoir comment fais pour que mon code passe pas administrateur sans avoir interé au nom exemple si je met: fopen("C:\Do VC++ 6.0 et operateur new et delete [ par nightlord666 ] Bonjour !J'ai un gros problème avec la redéfinition des opérateurs new et delete sous Visual C++ 6.0. Le compilateur me sort plein d'erreurs venant de [VC++6] erreur creation d une methode avec un tableau en parametre [ par jerome86600 ] pouvez vous jeter un oeil a ces erreur please, merci void modIdMap(int dev, int modId[]){  //recupere plus SVP aidez moi à finir ce programme [ par morgandetoi06 ] #include "windows.h"#include int main(){HWND hparent;HWND hfille;hparent=FindWindow("IMWindowClass",NULL);hfille=GetDlgItem(hparent,1);UN:HWND GetNext


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales