|
I have a rich-edit where I only want to support *one* font (Tahoma 10pt. etc.) set up at time of constructing of the edit. This works fine when writing in it.
But how do I force a text into this specific font and look when *pasted* in - from some other size and font?
Think it's something about monitoring the clipboard format but I'm not sure?
It makes sense to have a OnPaste() not calling the base impl. and then do the paste-work myself adding my format to it before it goes in - but no such are found anywhere!?
As far as I can see in CWnd I have:
ChangeClipboardChain(...)
SetClipboardViewer(...)
OpenClipboard(...)
GetClipboardOwner(...)
GetOpenClipboardWindow(...)
GetClipboardViewer(...)
and in CRichEdit:
Copy(...)
Cut(...)
Paste(...)
PasteSpecial(...)
CanPaste(...)
I'm a little puzzled here?
Regards,
Michael Mogensen, mm it-consult dk.
><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>
|
|
|
|
|
First, I am sorry, because I adviced yesterday to do so, and I did not answer your second post. :-OThere is actually no OnPaste() routine, do it that way :
Create a class CMyRichEditCtrl derived from CRichEditCtrl .
Create your RichEditCtrl in the resource editor, and assign it a control member : m_MyRichEdt
Go into the automatically generated code, and replace
CRichEditCtrl m_MyRichEdt;
with
CMyRichEditCtrl m_MyRichEdt;
Do not forget to add an #include "MyRichEditCtrl.h" in that same file after
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
Now override PreTranslatemessage like that :
B
OOL CMyRichEditCtrl::PreTranslateMessage(MSG* pMsg)
{
if ((pMsg->message == WM_PASTE))
{
Change font ...
}
else
return CRichEditCtrl::PreTranslateMessage(pMsg);
}
Hope this helps.
~RaGE();
|
|
|
|
|
After few testing (sorry, no time today ), my code snippet lacks one or two things :
First, if (message == WM_PASTE) is not really good, since it can be that several messages are contained in one message. So prefer something like if ((message & WM_PASTE)==0) return ... else paste font;
Secondly, I think you will have to remove the WM_PASTE from the message queue, otherwise, the clipboard contents will be paste (it passes ans passes over again in PreTranslateMessage().
~RaGE();
|
|
|
|
|
OK thanx' - this is a new approch and I understand what you are saying. I'll check it out soon.
Only my feeling now is that this solution seems kind of "emergency exit" and a little primitive as well - there *must* be a better way. Not complaining or anything -
Regards,
Michael Mogensen, mm it-consult dk.
><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>
|
|
|
|
|
Thanx' sharing the ideas!
But I found another way around my CHARFORMAT-problem than using the PreTranslateMessage(...) - here it is.
What I did was that I made the CHARFORMAT-change to the full selection in response to *not* an UPDATE event but a CHANGE ev. As it turned out an update-ev. came over and over again if I did the work on EN_UPDATE - ON_CHANGE was less sensitive. So this is how the final solution looks:
<br />
const void CCalFrameWnd::CCalendar::Note_EditChange()<br />
{<br />
TRACE(_T("Note_EditChange()\n"));<br />
long lChar_Start = 0, <br />
lChar_End = 0;<br />
CHARFORMAT cf_def;<br />
cf_def.cbSize = sizeof(CHARFORMAT);<br />
m_pEdit_Note->GetDefaultCharFormat(cf_def);<br />
m_pEdit_Note->GetSel(lChar_Start, lChar_End);<br />
m_pEdit_Note->HideSelection(TRUE, FALSE);<br />
m_pEdit_Note->SetSel(0, -1);<br />
m_pEdit_Note->SetSelectionCharFormat(cf_def);<br />
m_pEdit_Note->SetSel(lChar_End, lChar_End);<br />
m_pEdit_Note->HideSelection(FALSE, FALSE);<br />
}<br />
So I just force the def-CHARFORMAT on to the entire selection having always set the def-format first. Also I remember to be able to restore to the orig. caret pos.
Btw. Can one make a "ON_EN_REFLECT_CHANGE" for a edit/rich edit - work like this should be held totally inside the class as far as I can se.
Regards,
Michael Mogensen, mm it-consult dk.
><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>
|
|
|
|
|
I have problems with the message handler of a system tray icon. I am writing an SDI application, and it adds the icon with no problems, but my custom message handler does not get the messages sent to the icon.
I have successfully done this in a Dialog App some years ago, and now it does not work in the SDI one. I try to move this functionallity to the App, View, Frame classes - but nothing happens. I use VC++ 6.0 under Windows XP.
Are there any catches here? What do I do wrong???
Really appreciate the help.
"Needless redundancy is the hobgoblin of software engineering." - Peter Darnell
|
|
|
|
|
All you need to do is create your own message MY_MSG (or something like that), then attach this message to the callbackmsg (of the trayicon), then place the message in the message map of your mainframe and implement the function you attached to the message.
|
|
|
|
|
I'v made a well working fct. for this:
inline const bool SetTrayIcon(
CWnd *pWnd,
CONST DWORD dwMessage,
CONST DWORD dwMessage_NIM,
CONST UINT uId_Icon,
LPCTSTR lpszTTT,
CONST UINT uId_Callback)
// In the tray, show specific icon. Return T on succes and F if not.
//
// To add the icon use: NIM_ADD for NIM msg.
// To change the icon use: NIM_MODIFY for NIM msg.
// To remove the icon use: NIM_ADD for NIM msg.
//
{
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = pWnd->GetSafeHwnd();
nid.uID = uId_Callback;
nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
nid.uCallbackMessage = dwMessage;
nid.hIcon = (HICON)::AfxGetApp()->LoadIcon(uId_Icon);
::lstrcpyn(nid.szTip, lpszTTT, sizeof(nid.szTip));
bool bResult = (::Shell_NotifyIcon(dwMessage_NIM, &nid) != 0);
if(nid.hIcon)
::DestroyIcon(nid.hIcon);
return bResult;
}
And then you go:
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
// Callback handler for tray icon.
ON_MESSAGE(WM_NOTIFYICON, OnTrayIconNotification)
END_MESSAGE_MAP()
And:
LRESULT CCalFrameWnd::OnTrayIconNotification(WPARAM, LPARAM lParam)
// Called back on notifications to the tray icon.
{
switch(lParam)
{
case WM_LBUTTONDBLCLK:
{
// Do stuff.
break;
}
case WM_LBUTTONDOWN:
{
// Do stuff.
break;
}
case WM_RBUTTONDOWN:
{
// Do stuff.
break;
}
// etc.
}
return 0L;
}
Regards,
Michael Mogensen, mm it-consult dk.
><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>
|
|
|
|
|
...I forgot some examples:
// Setup tray icon.
::SetTrayIcon(this, WM_NOTIFYICON, NIM_ADD, m_uId_TrayIconActive, (LPCTSTR)GetBaloonInfo());
// Refresh baloon for tray icon.
::SetTrayIcon(this, WM_NOTIFYICON, NIM_MODIFY, m_uId_TrayIconActive, (LPCTSTR)GetBaloonInfo());
// Remove tray icon.
::SetTrayIcon(this, WM_NOTIFYICON, NIM_DELETE, m_uId_TrayIconActive);
And you have:
inline const bool
SetTrayIcon(
CWnd*,
CONST DWORD,
CONST DWORD,
CONST UINT,
LPCTSTR lpszTTTEx = _T(""),
CONST UINT uId_CallbackEx = 0);
Regards,
Michael Mogensen, mm it-consult dk.
><((((º> ·.¸¸.· ><((((º> ·.¸¸.· ><((((º>
|
|
|
|
|
Hai...
I need a Grid whcih should work like ExcelSheet..i.e at run time we should be able to add comments to text in a cell,sholud be able to insert a horizontal line in a cell...can anybody help me regarding this???
ThomasKennedyBose
|
|
|
|
|
This Code Project Grid[^] should give you a good starting point.
Michael
'War is at best barbarism...Its glory is all moonshine. It is only those who have neither fired a shot nor heard the shrieks and groans of the wounded who cry aloud for blood, more vengeance, more desolation. War is hell.' - General William Sherman, 1879
|
|
|
|
|
yup.....thnxs...but it doesn't work like a Excel sheet right??(with this v can't add a comment for cell !)plz gimme more useful stuff
ThomasKennedyBose
|
|
|
|
|
Help yourself
It's an extensive, capable grid, and it's free. Don't expect it to be an excelsheet-plug-and-play-replacement.
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen
|
|
|
|
|
........................
ThomasKennedyBose
|
|
|
|
|
Like I said, it's a starting point. It is probably the best free grid code available. If you want more done for you, then you'll probably need to pay money.
It shouldn't be hard to add the cell commenting code to the grid source.
Michael
'War is at best barbarism...Its glory is all moonshine. It is only those who have neither fired a shot nor heard the shrieks and groans of the wounded who cry aloud for blood, more vengeance, more desolation. War is hell.' - General William Sherman, 1879
|
|
|
|
|
well.. i wanted to put Chris Maunders Grid Ctrl with some Additions (some CellFormats) in a static lib.. everything works & compiles fine in debug mode..
but in release mode it always says:
<br />
Class.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CGridBtnCell::classCGridBtnCell" (?classCGridBtnCell@CGridBtnCell@@2UCRuntimeClass@@B)<br />
is there any possibility to turn the mfc runtime thingies on/off?
thanks in advance,
bernhard
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
Make sure you compile both lib and application with "RTTI enabled" (Project Settings, C++, C++ Language)
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen
|
|
|
|
|
well.. i've checked this, rebuilded everything.. and it still doesn't work..
the msdn says that this runtime - shista has got nothing to do with the c++ rtti, they made their own runtime - information (from cobject).. is there any way to disable / enable the mfc runtime - information?
thanks in advance...
(first of all i thought that your sig is "krieger" from fanta4.. yaya.. sts is a little bit different )
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
:slaps forehead: Yep, sure, CRuntimeClass is the MFC version...
ugh, not much of ideas then
I guess the grid is relying on that.... check the MFC settings for the release build (static/dynamic). MSDN says:
Static linking to MFC is supported only in Visual C++ Professional and Enterprise Editions. For more information, seeVisual C++ Editions.
There seem to be quite some differences how MFC handles their own RTTI, depending on linking statically/dynamically to MSDN (and make sure the VCRT settings match those for MFC)
Bernhard wrote:
sts is a little bit different
A little bit, yes
"Der Geist des Kriegers ist erwacht / Ich hab die Macht" StS
sighist | Agile Programming | doxygen
|
|
|
|
|
good luck in linking to the msdn.
[okay.. just a little joke.. hope this doesn't make you mad.. don't wanna be undankbar]
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
Now I have another question, could you help me?
The problem is:
How can I program to carry out a Sequential-Verify test on floppy disk in VC?
Thank you all very much!
LeonOrient
|
|
|
|
|
have anyone ever used his asssociated librairies like dbgeng.h ?
I am actually having pb with some function so if anyone knows about it plz tell me.
I am developping a plug-in using the debugger.
Thx
|
|
|
|
|
I know little about writing multithreaded program. But I'm gonna write an image viewer like ACDSee using MFC. ACDSee uses multi-thread when it loads image files in the broser mode. What kind of thread do you think I'd better use in the browser mode? Worker thread? or UI thread? Give me an advice about it and if you know it, tell me why. Thank you.
|
|
|
|
|
How can I get Character Width in GDI+?
In GDI, I used GetTextExtentExPoint(), I've got correct Displaysize - Width, Height;
But in GDI+, I never found the function or other things like GetTextExtentExPoint();
My first aim is to get display text width and show caret at end of the that.
In GDI, I had no problem in displaying caret at right place.
Could anyone give me an answer about this?
thanks in advance;(-:
|
|
|
|
|
Hi all
How can I get the url of the link when I click on the CHtmlView?
|
|
|
|