Probleme focus ?

sleeper41 Messages postés 13 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 26 février 2004 - 16 févr. 2004 à 15:04
sleeper41 Messages postés 13 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 26 février 2004 - 17 févr. 2004 à 10:05
bonjour
voila j ai 2 threads qui lance 2 dialogbox avec sur l un 1 bouton et sur l autre 1 editbox.
mon but est quand j appuie sur le bouton d'ecrire le texte ce bouton dans l'editbox.
voila j ai fait ceci mais ca ne marche que kan je passe ma souris sur la 2 eme DialogBox.
Est ce un probleme de focus?
Quelqu un peut il m aider à regler mon pb?
Merci

/****** ******/

char chaine_mot[256];
UINT Mess2;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
DWORD ThreadId;

HANDLE hThread[5];

InitializeCriticalSection(&Sync);

hThread [0] = CreateThread(NULL,NULL,Thread1,(LPVOID) hInstance, NULL, &ThreadId);
hThread [1] = CreateThread(NULL,NULL,Thread2,(LPVOID) hInstance, NULL, &ThreadId1);

while (!terminer);

TerminateThread(hThread [0], 0);
TerminateThread(hThread [1], 0);

WaitForMultipleObjects(2, hThread, TRUE, INFINITE);

DeleteCriticalSection(&Sync);

return 0;
}

BOOL CALLBACK DialogProc1 (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG :
return 0;
case WM_COMMAND :
switch (LOWORD(wParam))
{
case IDC_QUITTER :
EndDialog(hDlg, 0);
break;

case IDC_Bouton :
strcat(chaine_mot,"toto");
Mess2=true;
break;
}
return 0;
}
return 0;
}

DWORD WINAPI Thread1 (LPVOID lpParam)
{
DialogBox((HINSTANCE) lpParam, MAKEINTRESOURCE(IDD_CLAVIER), NULL, DialogProc1);
return 0;
}

BOOL CALLBACK DialogProc2 (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
if(Mess2==1){
// GetForegroundWindow();
// PostMessage(hDlg, WM_NEXTDLGCTL, 0, 0);
// SetDlgItemText(hDlg,IDC_EDIT,chaine_mot);
Mess2=0;
}

switch(message){
case WM_COMMAND :
switch (LOWORD(wParam))
case IDC_QUITTER :
EndDialog(hDlg, 0);
break;
return 0;
}
return 0;
}

DWORD WINAPI Thread2 (LPVOID lpParam)
{

DialogBox((HINSTANCE) lpParam, MAKEINTRESOURCE(IDD_THREAD_2), NULL, DialogProc2);
return 0;
}
/**** ****/

2 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 févr. 2004 à 00:16
EN fait tu n'affiche le texte que lorsque le 2ème dialogue reçoit un message. C'est pour cela qu'il ne se passe rien tant que tu ne passe pas la souris au dessus (qui envoi un message WM_MOUSEMOVE).

dans l'init de la 2ème dialogue (hEdit de type HWND et global):
hEdit = GetDlgItem(hDlg, IDC_EDIT);

dans le dialogue 1 :
case IDC_Bouton :
SetWindowText(hEdit, "toto");
break;
0
sleeper41 Messages postés 13 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 26 février 2004
17 févr. 2004 à 10:05
merci je vais faire comme tu m as dis...
ciao
0
Rejoignez-nous