Buna,
Referitor la acest topic: http://www.codexpert.ro/forum/viewtopic.php?f=30&t=1816
Am reusit sa integrez clasa derivata, si am reusit sa primesc apel la apasarea tastei tab
void CDEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){
CprobDlg *pdlg = (CprobDlg *)theApp.m_pMainWnd; // legatura inapoi
switch(nChar){
case VK_TAB:
//(CDialog *)GetParentOwner()->;
pdlg->mEditList.SetFocus();
pdlg->mEditList.PostMessageA(13,13,13);
//pdlg->mEditList.SetWindowTextA("uu");
break;
default:
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
}
Cum as putea sa reusesc cand apas tasta TAB, sa trimita un TAB spre textul care exista, adica sa fie acel spatiu oferit de TAB
Multumesc
[request] MFC+CEdit+TAB_KEY pressed
Re: [request] MFC+CEdit+TAB_KEY pressed
Încearcă asta:
Pentru a trata şi tasta <Enter>, e suficientă setarea proprietăţii „Want Return” în editorul de resurse.
Code: Select all
case VK_TAB:
ReplaceSel(_T("\t"), TRUE);
break;
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: [request] MFC+CEdit+TAB_KEY pressed
Tab-urile sunt suportate numai in edit-urile multi-line (si pentru astea nu trebuie sa faci toate acele giumuslucuri pe OnChar).
In cele single-line, daca inserezi un '\t' iti va afisa doar un patratel/carcalac la fel ca pentru alte caractere neprintabile.
Pentru lamurire, vezi CEdit::SetTabStops.
In cele single-line, daca inserezi un '\t' iti va afisa doar un patratel/carcalac la fel ca pentru alte caractere neprintabile.
Pentru lamurire, vezi CEdit::SetTabStops.
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Re: [request] MFC+CEdit+TAB_KEY pressed
Am reusit asa:
void CDEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){
CprobDlg *pdlg = (CprobDlg *)theApp.m_pMainWnd; // legatura inapoi
char sztext[5] ;
switch(nChar){
case VK_TAB:
pdlg->mEditList.SetFocus();
sztext[0] = '\t';
sztext[1] = '\0';
pdlg->mEditList.SendMessage(EM_SETSEL , -1,-1 ) ;
pdlg->mEditList.SendMessage(EM_REPLACESEL,true,(LPARAM)&sztext);
break;
case VK_RETURN:
pdlg->mEditList.SetFocus();
sztext[0] = '\n';
sztext[1] = '\0';
pdlg->mEditList.SendMessage(EM_SETSEL , -1,-1 ) ;
pdlg->mEditList.SendMessage(EM_REPLACESEL,true,(LPARAM)&sztext);
break;
default:
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
}
dar enter nu functioneaza cum ar trebui!!!
void CDEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags){
CprobDlg *pdlg = (CprobDlg *)theApp.m_pMainWnd; // legatura inapoi
char sztext[5] ;
switch(nChar){
case VK_TAB:
pdlg->mEditList.SetFocus();
sztext[0] = '\t';
sztext[1] = '\0';
pdlg->mEditList.SendMessage(EM_SETSEL , -1,-1 ) ;
pdlg->mEditList.SendMessage(EM_REPLACESEL,true,(LPARAM)&sztext);
break;
case VK_RETURN:
pdlg->mEditList.SetFocus();
sztext[0] = '\n';
sztext[1] = '\0';
pdlg->mEditList.SendMessage(EM_SETSEL , -1,-1 ) ;
pdlg->mEditList.SendMessage(EM_REPLACESEL,true,(LPARAM)&sztext);
break;
default:
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
}
dar enter nu functioneaza cum ar trebui!!!
- Ovidiu Cucu
- Fondator
- Posts: 3778
- Joined: 11 Jul 2007, 16:10
- Judet: Iaşi
- Location: Iasi
- Contact:
Re: [request] MFC+CEdit+TAB_KEY pressed
Ce rost are "legatura inapoi"? "this" nu e OK?
In fine, sa incerc s-o lamuresc.
NU are sens sa inserezi tu '\t', '\r', '\n' pe handlerul lui WM_CHAR, intr-un control edit.
Cum am zis mai devreme...
In unele cazuri are, de exemplu daca am un "in-place edit" folosit pentru editarea unui grid sau unei liste stil report, ca sa "prind" TAB, ENTER si sageti pentru navigare intre celule.
In fine, sa incerc s-o lamuresc.
NU are sens sa inserezi tu '\t', '\r', '\n' pe handlerul lui WM_CHAR, intr-un control edit.
Cum am zis mai devreme...
- daca editul este single-line atunci iti va afisa un simbol reprezentand "caracter neprintabil".
- daca edit-ul este multi-line (are stilul ES_MULTILINE), atunci este suficient sa intoarca DLGC_WANTALLKEYS ca raspuns la mesajul WM_GETDLGCODE; mai departe se ocupa controlul intern, sa insereze TAB si respectiv sa treaca la linie noua.
In unele cazuri are, de exemplu daca am un "in-place edit" folosit pentru editarea unui grid sau unei liste stil report, ca sa "prind" TAB, ENTER si sageti pentru navigare intre celule.
Ovidiu
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks
Follow http://twitter.com/#!/ovidiucucu
Weblog: http://codexpert.ro/blog/author/ovidiu-cucu/
Visit FAQ, Tips & Tricks