IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Problème de "rafraichissement" dans une edit box e


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Problème de "rafraichissement" dans une edit box e
    Voila le code du fichier principal :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    #include "resource.h"
    #include <windows.h>
    #include <stdio.h>
    #include <Tlhelp32.h>                       /* process */
    
    
    
    HINSTANCE hInstDlg;
    HBRUSH hBrush;
    
    /*********************/
    void GetProcessList&#40;HWND hwnd&#41;
    &#123;
    
    
    	HANDLE hSnapShot;
    	PROCESSENTRY32 uProcess;
    	bool r;
    	char BufferProcess&#91;2048&#93;=&#123;0&#125;;
    	memset&#40;BufferProcess, '\0', sizeof&#40;BufferProcess&#41;&#41;;
    
    	hSnapShot = CreateToolhelp32Snapshot&#40;TH32CS_SNAPALL,0&#41;;
    	uProcess.dwSize = &#40;DWORD&#41; sizeof&#40;PROCESSENTRY32&#41;;
    
    	r = Process32First&#40;hSnapShot, &uProcess&#41;;
    	do &#123;
    
    		strcat&#40;BufferProcess, uProcess.szExeFile&#41;;
    		strcat&#40;BufferProcess, "\r\n"&#41;;
    
    		r = Process32Next&#40;hSnapShot, &uProcess&#41;;
    	&#125;while&#40;r&#41;;
    
    	CloseHandle&#40;hSnapShot&#41;;
    
    	SetDlgItemText&#40;hwnd, IDC_PROCESS_REPLY, BufferProcess&#41;;
    
    &#125;
    
    
    void KillProcess&#40;char *ExeName&#41;
    &#123;
    
    	HANDLE hSnapShot;
    	PROCESSENTRY32 uProcess;
    	bool r;
    	short PID = 0;
    
    	hSnapShot = CreateToolhelp32Snapshot&#40;TH32CS_SNAPALL,0&#41;;
    	uProcess.dwSize = &#40;DWORD&#41; sizeof&#40;PROCESSENTRY32&#41;;
    
    	r = Process32First&#40;hSnapShot, &uProcess&#41;;
    	do &#123;
    		if &#40;strstr&#40;uProcess.szExeFile, ExeName&#41;&#41; &#123;
    			PID = &#40;short&#41; uProcess.th32ProcessID;
    		&#125;
    
    		r = Process32Next&#40;hSnapShot, &uProcess&#41;;
    	&#125;while&#40;r&#41;;
    
    	CloseHandle&#40;hSnapShot&#41;;
    
    	HANDLE hTemp;
    
    	hTemp = OpenProcess&#40;PROCESS_ALL_ACCESS, false, PID&#41;;
    	TerminateProcess&#40;hTemp,0&#41;;
    
    &#125;
    
    /*********************/
    
    
    LRESULT CALLBACK MainProc&#40;HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam&#41;;
    
    
    int APIENTRY WinMain&#40;HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow&#41;
    &#123;
    	hInstDlg = hInstance;
    
    	HWND hDlg;
    	hDlg=CreateDialog&#40;hInstance,&#40;LPCTSTR&#41;IDD_DIALOG1,NULL,&#40;DLGPROC&#41;MainProc&#41;;
    	ShowWindow&#40;hDlg,SW_SHOW&#41;;
    
    	
    	MSG msg;
    	while&#40;GetMessage&#40;&msg,NULL,0,0&#41;==TRUE&#41;
    	&#123;
    		TranslateMessage&#40;&msg&#41;;
    		DispatchMessage&#40;&msg&#41;;
    	&#125;
    	return 0;
    &#125;
    
    
    LRESULT CALLBACK MainProc&#40;HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam&#41;
    &#123;
    
    	int Select;
    	switch&#40;message&#41;
    	&#123;
    
    	case WM_INITDIALOG&#58;
    		hBrush = CreateSolidBrush&#40;RGB&#40;0,0,0&#41;&#41;;
    		break;
    
    
    	case WM_CTLCOLORDLG&#58;
    		return &#40;LONG&#41;hBrush;
    		break;
    
    
    	case WM_CTLCOLORSTATIC&#58;
    		SetTextColor&#40; &#40;HDC&#41;wParam, RGB&#40;255,0,0&#41; &#41;;
    		SetBkMode&#40; &#40;HDC&#41;wParam, TRANSPARENT &#41;;
    		return &#40;LONG&#41;hBrush;
    		break;
    
    	case WM_CTLCOLOREDIT&#58;
    		SetTextColor&#40; &#40;HDC&#41;wParam, RGB&#40;0,255,0&#41; &#41;;
    		SetBkMode&#40; &#40;HDC&#41;wParam, TRANSPARENT &#41;;
    		return &#40;LONG&#41;hBrush;
    		break;
    
    
    	case WM_COMMAND&#58;
    		Select=LOWORD&#40;wParam&#41;;
    		switch&#40;Select&#41;
    		&#123;
    
    		case IDC_GET_PROCESS_LIST&#58;
    			GetProcessList&#40;Dlg&#41;;
    			return TRUE;
    
    		case IDC_KILL_PROCESS&#58;
    			char ProcessName&#91;64&#93;;
    			GetDlgItemText&#40;Dlg, IDC_EDIT_KILL_PROCESS, ProcessName, sizeof&#40;ProcessName&#41;&#41;; 
    			KillProcess&#40;ProcessName&#41;;
    			return TRUE;
    
    
    		case IDCANCEL&#58;
    			EndDialog&#40;Dlg,Select&#41;;
    			PostQuitMessage&#40;0&#41;;
    			return TRUE;
    
    		&#125;
    		default&#58;
    			return FALSE;
    	&#125;
    
    	return TRUE;
    
    &#125;
    Le problème ce situe à ce niveau je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	case WM_CTLCOLOREDIT&#58;
    		SetTextColor&#40; &#40;HDC&#41;wParam, RGB&#40;0,255,0&#41; &#41;;
    		SetBkMode&#40; &#40;HDC&#41;wParam, TRANSPARENT &#41;;
    		return &#40;LONG&#41;hBrush;
    		break;
    Le problème c'est quand je fais getlist et que je bouge avec la barre de défilement j'obtient un pâté de texte.

    Pour mieux comprendre si je me suis mal exprimé : ICI

    Si quelqu'un pouvais me dire pourquoi et comment y remédier...

    Merci d'avance.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    L'erreur est ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetBkMode&#40; &#40;HDC&#41;wParam, TRANSPARENT &#41;;
    le fond de ton texte est transparent, donc il est pas effacé, donc ton texte se dessine par dessus l'ancien lorsqu'il y a scrolling.
    Remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SetBkColor&#40; &#40;HDC&#41;wParam, RGB&#40; 0, 0, 0 &#41; &#41;;
    Note aussi que si tu utilises une brosse noire, au lieu de la créer puis détruire (chose que tu as oublié), tu peux utiliser GetStockObject( BLACK_BRUSH );

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter du texte dans une edit box
    Par raf_gug dans le forum MFC
    Réponses: 10
    Dernier message: 23/05/2013, 10h00
  2. Réponses: 11
    Dernier message: 08/02/2006, 22h31
  3. Réponses: 9
    Dernier message: 15/09/2004, 21h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo