Dunque, ho un dialogo, dovrei aggiungere il testo contenuto in un controllo EDIT in una LISTBOX, quando premo il pulsante OK.
Ma non capisco perchè, quando premo OK, non succede proprio nulla. Per controllare se l'applicazione arriva a gestire l'evento WM_COMMAND ho inserito una MESSAGEBOX, ed infatti quando clicco il pulsante la MESSAGEBOX appare, ma il testo dell'EDIT proprio non me la vuole inserire nella LISTBOX!
codice:
#define STRICT
#define WIN32_LEAN_AND_MEAN
#define OEMRESOURCE
#include <windows.h>
#include <windowsx.h>
#include <stdlib.h>
#include <string.h>
#include "resource.h"
#include "main.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
DialogBoxParam(0,MAKEINTRESOURCE(IDD_DIALOG1), 0,EventsManager,0);
return 0;
}
BOOL CALLBACK EventsManager(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static int messages[]={WM_CLOSE,WM_COMMAND,-1};
static DLGPROC on_events[]={On_Close,On_Command};
int i=0;
int notify=0;
char str[6];
while(notify>=0)
{
notify=messages[i];
if(notify<0)break;
if(uMsg==notify)return on_events[i](hwndDlg, uMsg, wParam, lParam);
i++;
}
return FALSE;
}
BOOL CALLBACK On_Command(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
char text[256];
HWND hEdit;
switch(HIWORD(wParam))
{
case BN_CLICKED:
{
switch(LOWORD(wParam))
{
case ID_OK:
{
MessageBox(0, "L'evento viene gestito", "Fin qui va tutto bene!", MB_OK);
hEdit=GetDlgItem(hwndDlg,ID_EDIT);
GetWindowText(hEdit,text,256);
SendMessage(hEdit,LB_ADDSTRING,0,(LPARAM)text);
return TRUE;
}
break;
case ID_CANCEL:
{
EndDialog(hwndDlg,0);
return TRUE;
}
break;
}
}
break;
}
return FALSE;
}
BOOL CALLBACK On_Close (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
EndDialog(hwndDlg,0);
return TRUE;
}