Bonjour,
J'obtiens une centaine de warning de ce type, je ne voit pas pourquoi, sur une méthode template.
a ce niveau la c'est bon:
au niveau de la méthode TextViewExecute j'obtiens des warnings:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <typename T> T executeTextView(UINT iMessage, WPARAM wParam = 0, LPARAM lParam = 0) { return (TextView::getInstance())->TextViewExecute<T>(_hSelf, iMessage, wParam, lParam); }
Je sais que ce warning provient souvent lorsque qu'une fonction retourne un bool en ces cas la je fait comme l'évènement TXM_CLEAR_BOOKMARK par exemple en ajoutant != 0, pour tous ce
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 template <typename T> T TextView::TextViewExecute(HWND hwnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { switch (iMessage) { case TXM_GETLENGTH: return (T) SendMessage(hwnd, TXM_GETLENGTH, (WPARAM)wParam, (LPARAM)lParam); //WARNING case TXM_GETLINECOUNT: return (T) SendMessage(hwnd, TXM_GETLINECOUNT, (WPARAM)wParam, (LPARAM)lParam); //WARNING case TXM_GETCHARACTERPOINTER: return (T) SendMessage(hwnd, TXM_GETCHARACTERPOINTER, (WPARAM)wParam, (LPARAM)lParam); //WARNING case TXM_COPYID: return (T) (SendMessage(hwnd, TXM_COPYID, (WPARAM)wParam, (LPARAM)lParam) != 0); case TXM_COPYIP: return (T) (SendMessage(hwnd, TXM_COPYIP, (WPARAM)wParam, (LPARAM)lParam) != 0); case TXM_COPYLINE: return (T) (SendMessage(hwnd, TXM_COPYLINE, (WPARAM)wParam, (LPARAM)lParam) != 0); case TXM_GOTOLINE: return (T) (SendMessage(hwnd, TXM_GOTOLINE, (WPARAM)wParam, (LPARAM)lParam) != 0); case TXM_GETDBFILENAME: return (T)SendMessage(hwnd, TXM_GETDBFILENAME, (WPARAM)wParam, (LPARAM)lParam); // WARNING case TXM_GETTEXTLINE: return T(SendMessage(hwnd, TXM_GETTEXTLINE, (WPARAM)wParam, (LPARAM)lParam)); //WARNING case TXM_TOGGLE_BOOKMARK: return (T)(SendMessage(hwnd, TXM_TOGGLE_BOOKMARK, (WPARAM)wParam, (LPARAM)lParam) != 0); case TXM_CLEAR_BOOKMARK: return (T)(SendMessage(hwnd, TXM_CLEAR_BOOKMARK, (WPARAM)wParam, (LPARAM)lParam) != 0); default: break; } return 0; };
qui ne retoune pas un boolean j'ai ces centaines de warning.
L'évènement TXM_GETTEXTLINE est censé me retourner un char *.
la procédure wndproc:
typedef LONG_PTR sptr_t;
le code de getCurrentTextLine():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 sptr_t TextView::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) { switch (iMessage) { ....... case TXM_GETTEXTLINE: return reinterpret_cast<sptr_t>(getCurrentTextLine()); } }
Avez vous une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 char * TextView::getCurrentTextLine() { BOOL success = FALSE; ULONG nLineNo, nFileOff; int cx; int ch; ULONG fileoff, length; char textline[2048]; MouseCoordToFilePos(m_nMouseX, m_nMouseY, &nLineNo, &nFileOff, &cx, ch); m_pTextDoc->getlineinfo(nLineNo, &fileoff, &length); if (length == 0) return NULL; char *buffer = NULL; if ((buffer = new char[length + 1]) != 0) { if (m_pTextDoc->getline(nLineNo, buffer, length + 1) > 0) { buffer[length] = '\0'; strcpy_s(textline, 2048, buffer); strcat_s(textline, "\n"); } delete[] buffer; buffer = 0; } else return NULL; return textline; }
ca fait plus d'une semaine que je recherche la solution sur le Net et je n'ai pas trouvé.
Merci de votre aide.
Partager