Newsgroup: it.comp.programmare.win32
Titolo: Dialog e il tasto RETURN

Salve
ho una dialog modale con 3 controlli RichEdit e 2 pulsanti .
Vorrei eliminare che la finestra si chiuda quando premo il tasto
RETURN mentre sono su un controllo di edit .
A parte che non capisco come mai anche subclassando il controllo di
edit non riesco ad intercettare il messaggio WM_KEYDOWN\VK_RETURN,
come faccio per risolvere il problema ?
Allego lo script della dialog :
IDD_DIALOG1 DIALOG 35, 31, 384, 163
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_VISIBLE |
WS_CAPTION | WS_SYSMENU
CAPTION ""
FONT 8, "MS Sans Serif"
{
 CONTROL "", IDC_RICHEDIT2, "RichEdit", WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 8, 16, 288, 15
 CONTROL "", IDC_RICHEDIT3, "RichEdit", WS_CHILD | WS_VISIBLE |
WS_BORDER | WS_TABSTOP, 315, 16, 40, 14
 CONTROL "", IDC_RICHEDIT1, "RichEdit", ES_MULTILINE | ES_AUTOVSCROLL
| ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL |
WS_HSCROLL | WS_TABSTOP, 8, 52, 292, 100, WS_EX_STATICEDGE |
WS_EX_CLIENTEDGE
 CONTROL "Salva", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD
| WS_VISIBLE | WS_TABSTOP, 316, 80, 50, 14
 CONTROL "Cancella", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER |
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 316, 112, 50, 14
 CONTROL "Descrizione", IDC_STATICTEXT1, "static", SS_LEFT | WS_CHILD
| WS_VISIBLE, 12, 39, 60, 8
 CONTROL "Oggetto", IDC_STATICTEXT2, "static", SS_LEFT | WS_CHILD |
WS_VISIBLE, 12, 4, 60, 8
 CONTROL "Data", IDC_STATICTEXT3, "static", SS_LEFT | WS_CHILD |
WS_VISIBLE, 320, 4, 28, 8
}
ciao


Per esempio:
BOOL CSampleControl::PreTranslateMessage(LPMSG lpmsg)
{
    BOOL bHandleNow = FALSE;
    if (lpmsg->message==WM_KEYDOWN)
        if (lpmsg->wParam==VK_RETURN)
			lpmsg->wParam=0 /* oppure VK_TAB o quello che vuoi al
posto di return */
	.....
	.....
}
Luc.

 writes:
O> Salve
O> ho una dialog modale con 3 controlli RichEdit e 2 pulsanti .
O> Vorrei eliminare che la finestra si chiuda quando premo il tasto
O> RETURN mentre sono su un controllo di edit .
O>  CONTROL "Salva", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD
O> | WS_VISIBLE | WS_TABSTOP, 316, 80, 50, 14
Non vorrei che in fase di creazione del dialog diventi (essendo IDOK)
CONTROL "Salva", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD
| WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON , 316, 80, 50, 14
                            ^^^^^^^^^^^^^^^^
e questo causa l'effetto  indesiderato col return. Forse (ripeto forse
perché tiro  ad indovinare) ti va  meglio se fai  un subclassing della
window procedure del bottone...
\begin{echelon}
[Hello to all my fans in domestic surveillance] NORAD Waco, Texas
arrangements Saddam Hussein Clinton Ft. Bragg Kennedy cryptographic
KGB FBI class struggle Honduras genetic Rule Psix
\end{echelon}
\begin{avviso}
 
Attenzione: Leggersi lo header riguardo al mio e-mail!
Warning: read header for infos about my e-mail.
\end{avviso}
--
+----------------------------------------------------------------+
| Gian Uberto Lauri * "So, are you working on fixing that bug    |
| 
sa...@eng.it
      *  *now* or leaving it until later ?" - YES  |
+----------------------------------------------------------------+

}
Visual C++ ?
Sto usando la programmazione procedurale stile C .
comunque grazie .

window procedure del bottone...
Io ho subclassato il controllo di Edit .
Perche' non mi intercetta il tasto WM_KEYDOWN\VK_RETURN quando premo
RETURN dal controllo ?
grazie

> window procedure del bottone...
O> Io ho subclassato il controllo di Edit .
O> Perche' non mi intercetta il tasto WM_KEYDOWN\VK_RETURN quando premo
O> RETURN dal controllo ?
Rimango sempre nell'ambito del tiro a indovinare.
Tu sei  dentro un dialog ed  i dialog hanno una  semantica diversa sui
keystrokes che se il mio fiuto non mi inganna gli Edit Box ricevono il
WM_KEY(UP|DOWN) _dopo_  che qualcun'altro  ci ha messo  le mani,  ed è
possibile che questo  qualcun'altro dichiari "messaggio gestito" prima
che arrivi alla window procedure della Edit Window.
Ipotizzo  questa   cosa  per  il   fatto  che  il  bottone   col  flag
BS_DEFPUSHBUTTON viene  "premuto" dando  un return _qualsiasi_  sia il
controllo  col focus. Per  questo ti  suggerivo di  provare a  fare il
subclassing del pulsante...
\begin{echelon}
cracking Cocaine spy South Africa cryptographic BATF quiche Ft. Meade
Noriega Delta Force Qaddafi [Hello to all my fans in domestic
surveillance] smuggle Serbian Rule Psix


> }
O> Visual C++ ?
O> Sto usando la programmazione procedurale stile C .
Beh, le chiamare a oggetti le MFC è un po' grossetta....
\begin{echelon}
Soviet counter-intelligence NORAD Cocaine SDI fissionable nuclear $400
million in gold bullion Honduras FBI World Trade Center BATF Ft. Meade
Qaddafi PLO
