|
Is there a simple way (preferably in the form of a tutorial or sample) to use the RichEdit view (MFC) to colour syntax dynamically. Say the language the user would type into the program was HTML and i wanted things like :
<HTML>, <HEAD>, <BODY> and so on in blue. Then scripts in red etc...
the syntax would need to be updated so that if i entered a new <SCRIPT> tag as soon as i typed the ending '>' it would turn red. Is there a way of using an array so that i place all the blue words in one array and all red ones in another.
Also is there a way of making text that is between two sets of quotation marks in one colour etc...
Please advise me on this i'm still a bit of a beginner to C++
Thanx
.NET or not .NET? MFC is the question......
(P.S. .NET Server is the biz, when u poor folks get it next year u'll realise )
|
|
|
|
|
See http://www.scintilla.org/.
Should do all you want and more.
i ain't happy, i'm feeling glad; i got sunshine in a bag; i'm useless, but not for long; the future is coming on...gorillaz, clint eastwood
|
|
|
|
|
Thanks that looks like it could work.
If any one else can find a better way i'm open for more suggestions!
.NET or not .NET? MFC is the question......
|
|
|
|
|
|
which site? codeproject?
.NET or not .NET? MFC is the question......
|
|
|
|
|
|
All,
I am loading a string into a CEdit box and want the cursor at the EOL so user can immediately add text.
When I try to use CEdit member function to do this, compiler complains that my variable is a CString type - which of course it is.
Have studied "Using the CEdit control" By Wolfram Steinke but can not duplicate how he assigned 2 variables (a CString type AND a CEdit type) to the same edit box.
Any help would be much appreciated!
Robert
|
|
|
|
|
Create your member variable of CEdit type - MFC Wizard "Add Member Variable" dialog has "Variable Type" combo for this. You can also keep two variables of different types for one control.
|
|
|
|
|
Thanks Alex,
I've got that working (thank-you!), but there still seems to be a "trick" I am missing.
If I write a simple test program that writes to and reads from an edit control, everything seems to work fine.
My "control CEdit" variable is: mc_editkey
=== for example, the following works fine:
mc_editkey.SetWindowText("some stuff");
int len = strlen("some stuff");
mc_editkey.SetSel(len,len,FALSE); //need to put cursor at end
mc_editkey.SetFocus();
UpdateData(FALSE);
===this seems to work fine also;
UpdateData(TRUE);
mc_editkey.GetWindowText(buf, bufmx);
But at other times, the SetWindowText() function does not seem to work and also any attempt to force the cursor to the end of the line also does not work.
Are there any tricks to getting the control to "pay attantion to me"?
Is it possible to issue UpdateData(FALSE) at the wrong time or too many times?
I think there is something(s) fundamental I am missing. For example when the Diaolog Box pops up I want the focus to be in the edit box, i.e. I want the cursor to be there. So in the OnInit function I issue:
mc_editkey.SetFocus();
UpdateData(FALSE);
But it never works.
Much thanks in advance,
Robert
|
|
|
|
|
UpdateData doesn't matter for variables of type Control such as CEdit, CComboBox etc., it works for variables of Value type such as CString, int... To set focus on dialog control use CDialog::GotoDlgCtrl. Don't forget also to set Tab Order in dialog resource editor (Layout menu).
|
|
|
|
|
Thank-you again Alex,
I pretty much have it working.
In the syntax for CDialog::GotoDlgCtrl it asks for CWnd* pWndCtrl as a function parameter.
I confess that I'm not sure which variable to use.
Best to you, Thanks again,
Robert
|
|
|
|
|
Write GoToDlgCtrl(GetDlgItem(nID)) or use variable of control type (CEdit etc.): GoToDlgCtrl(&m_edit_box).
|
|
|
|
|
Alex ... again... thanks,
Got the Init focus problem resolved
Have a good weekend,
Robert
|
|
|
|
|
Hi Robert!
I have encountered the same problem, specifically when subclassing the control.
See this thread.
SetWindowText() does not work well for me,
so I resorted to using ReplaceSel() instead.
To move the caret to the end, try:
mc_editkey.SetSel(0, -1);
mc_editkey.SetSel(-1, -1);
Now, use ReplaceSel to append text:
ReplaceSel(buf);
In your case, I think it might be enough with ReplaceSel(), since it should move the caret to the end.
There is no need to use UpdateData(), it will work anyway.
Do you return FALSE from OnInitDialog()? You must do that when setting the focus on a control. See CDialog::OnInitDialog in MSDN.
Cheers,
/Fredrik
Do you Sonork? I do! 100.11430 PhatBoy
|
|
|
|
|
Thank-you Fredrik,
I pretty much have it working
I appreciate the the reference too!
Best regards, and thanks again,
Robert
|
|
|
|
|
Hi
How can i get the time From the pc clock?
|
|
|
|
|
CString strTime = COleDateTime::GetCurrentTime().Format("%I:%M:%S %p, %m/%d/%y");
CString strTime = COleDateTime::GetCurrentTime().Format(_T("%I:%M:%S %p, %m/%d/%y"));
The format adjusts how it ends up looking I don't know the specifics but it should be in VC++'s help.
- Matt Newman
- Matt Newman
-Sonork ID: 100.11179:BestSnowman
|
|
|
|
|
Hi everyone. Does anyone know how, or where I can go to find out how to detect the current version of MDAC is installed on a user's computer? I want to make sure the user cannot run a program I wrote without having the minimum required version of MDAC installed first.
|
|
|
|
|
use this code on ::InitInstance to check if MDAC is installed
CLSID clsid;
HRESULT hr = AfxGetClassIDFromString("Datalinks", &clsid);
if(!SUCCEEDED(hr))
{
AfxMessageBox("You need to install MDAC v2.1 orhigher"); return FALSE;
}
the version number is held in the registry, I think
HKEY_CLASSES_ROOT\MDACVer.Version with a subkey CurVer with the value like MDACVer.Version.2.60.
|
|
|
|
|
I just want to know what kind of APIs and stuff I would need to write a winzip like program.
"To wonder is to begin to understand"
|
|
|
|
|
I suggest you get a copy of the zlib library, which is free, very good, massively used and has rather good support at its website.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
|
Thank you very much
"To wonder is to begin to understand"
|
|
|
|
|
Hi all,
I have a table(PERSON) with thease fields:
PID - PNAME - PFAMILY
I have other table, too :
OID - ONAME - OID2 and ...
OID and OID2 cant save information like PID(Master-Detail fields):
OID and OID2(Detail) ---> PID(Master)
For example:
in PERSON field:
1 - Hadi - Rezaie
2 - Ali - Arabi
3 - Karim- Khaleghi
and ...
in second table:
1 - Laleh - 2
3 - Pedram- 1
Thease numbers in second table must be in PERSON table ...
Now in report i wanna show information like it:
Person name & family Name Person Name
Hadi Rezaie Laleh Ali Arabi
Karim Khaleghi Pedram Hadi Rezaie
I have problem in creating this report, how can i do it ?
Do you get my mean ?
If not please tell me, i'll explain more ...
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
I found my reply ...
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|