|
I actually sits within an area on a scrollview. Kind of like a text box in word. Then when the time comes, draw the text to the printer or some other device.
Sorry for the confustion.
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|
|
I want to output the text in a rich edit control (there are many on the same page) with the same format and fonts usage as in the Rich Edit control. I thought I could use the FormatRange, but since I don't know what the target device is when it is being used, I'm not sure if that would work. So, I was getting one line at a time, then spending time to scan character by character checking the fonts used. When the font changs, then I would save off the font and the text. I continue until the whole line is scanned and getting the height of the text to the baseline. Setting the output to use the base line as the y parameter and outputting it to the device. This is so ineffecient it isn't funny. Am I correct in using FormatRange? OR, could I use FormatRange along with DisplayBand to output line by line. Again, inefficient than doing the whole thing, but it would be better than doing character by character.
Thanks Dave.
Larry
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|
|
I do something very similar. For a billing application I wrote, a number of users wanted "word processing", so I use a commentary window which is a richedit.
I use FormatRange to step through appropriately sized chunks of the richedit, by working out what printable space there is (in twips), and making repeated calls, to build up a list of ranges (since it could be multi-page), more efficient than scanning the control's contents for changes (although it's similar to what the control is probably doing internally).
Steve S
|
|
|
|
|
Did you use the SetTargetDevice to make it WYSIWYG? The problem I'm having (or maybe I'm just making it harder than it really is) is that I don't know what tht output device will be at the time they enter in the data.
Thanks for the Reply and info Steve.
Larry
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|
|
I have tried using the SetTargetDevice with the width of the window (in TWIPS) and getting the printer DC. The text is coming out in the proper format (line breaks and all), but the graphics that surround that are not.
As an example, I place a line just to the end of the line, then do a print preview and the text extends past this line. I can send the test code that I'm playing with so you can see what I'm seeing.
I am also getting conviced to do WYSIWYG, I really do need the output device to do the formatting. With out the device, what I need to do is seeming more and more impossible without a lot of fudging!
Thanks you Guys.
Larry
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|
|
Hi!
I need to exchange data from MFC Dialog A to MFC Dialog B. What I tried is using Messages (like WM_COPYDATA, or user messages (registered/Not registered)) to pass an address of a struct where I have put ma data, but without success. The message never arrives, and I think the problem is that I do not have the handle of B in A, and the ::SendMessage (Or PostMessage) needs a hWnd as first parameter. HWND_BROADCAST instead did not bring anything ...
I only need to pass 1 struct, so I do not want to Use a CMemFile...
Please, CPians, help ... many thanks...
~RaGE();
|
|
|
|
|
Rage wrote:
...pass an address of a struct...
Is this struct created on the heap or the stack?
Rage wrote:
The message never arrives, and I think the problem is that I do not have the handle of B in A, and the ::SendMessage (Or PostMessage) needs a hWnd as first parameter.
You are correct. Without a window handle, Windows does not know to whom the message is to be delivered.
|
|
|
|
|
DavidCrow wrote:
Is this struct created on the heap or the stack?
on the heap.
DavidCrow wrote:
You are correct. Without a window handle, Windows does not know to whom the message is to be delivered.
Any idea how to get that handle ? Is there any simpler way that using EnumWindow or FindWindow ?
Thanks for your answer.
~RaGE();
|
|
|
|
|
Rage wrote:
Any idea how to get that handle ? Is there any simpler way that using EnumWindow or FindWindow ?
There are lots of simple ways. The question is which is the better (i.e., more reliable) way? Read this article on using FindWindow() in the context of controlling the number of instances an application allows.
|
|
|
|
|
So I am writing an editor for a 3D space game with direct X placed inside a Child Frame.. My problem is that. I need to be able to get the title bar info to adjust the size for picking. This will allow me to correctly send mouse coords to pick models in 3d space.
Basically I just need to add the hight of the title bar to the y mouse coord.
I am tryign to use:
TITLEBARINFO ti;
GetTitleBarInfo(&ti);
However TITLEBARINFO is not valid in MFC as far as I can tell. I tried including winuser.h but as usual cant include windows.h in an mfc project. How can I get the size or how can I get the TITLEBARINFO structure in MFC??
|
|
|
|
|
it has to be defined, because
BOOL GetTitleBarInfo(
PTITLEBARINFO pti
) const;
is defined!
Don't try it, just do it!
|
|
|
|
|
Why can't you include windows.h in your MFC project? I can...
A student knows little about a lot.
A professor knows a lot about little.
I know everything about nothing.
|
|
|
|
|
I use it return value ,there is a cmpile error:
Return Values
If the function is successful, it returns NERR_SUCCESS.
If the function fails, the return value is one of the following error codes.
Value Meaning
ERROR_ACCESS_DENIED The user does not have access to the requested information.
NERR_InvalidComputer The computer name is invalid.
ERROR_MORE_DATA More entries are available with subsequent calls.
|
|
|
|
|
Richard White wrote:
I use it return value ,there is a cmpile error:
And which one? In which code?
Please rephrase your question, so that one can understand what you want to ask.
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
Are you getting a compiler error, or a runtime error? You indicate a "cmpile error" but give no other information.
ERROR_ACCESS_DENIED and ERROR_MORE_DATA are defined in winerror.h.
|
|
|
|
|
this question how u posted it cant be answered!
try again!
Don't try it, just do it!
|
|
|
|
|
I am sorry for my poor english,thank for your help,I search MSDN,can't find NERR_SUCCESS and ERROR_ACCESS_DENIED defined.
I use like this :
if (NetUserEnum(.....) == NERR_Success )<br />
..........
The compiler complain as following.
C:\MYAPP\VCAPP\GetUser\GetUserDlg.cpp(111) : error C2065: 'NERR_Success' : undeclared identifier
|
|
|
|
|
Richard White wrote:
I use like this: if (NetUserEnum(.....) == NERR_Success )
..........
The compiler complains[...]
Sure, because the name of the constant is NERR_SUCCESS .
See the difference? Character case does matter!
Who is 'General Failure'? And why is he reading my harddisk?!?
|
|
|
|
|
Hi All,
I'm implementing a CFileDialog open/save as application using 6.0.
My problem is trying to prevent the user from browsing above a specific directory, but allow them to browse the directories below it.
I've tried many different approaches, but I still can't get it to work. At the moment I'm capturing the OnFolderChange message, which is produced after the user changes the folder he/she is browsing. In that method, I'm checking the current directory, and if it is outside of my directory range, then I thought I could just set the current working directory to what I need it to be, and then force the application to redraw. Here's the code:
<br />
void CLibselformdlg::OnFolderChange() <br />
{<br />
char buffer[MAX_PATH]="";<br />
DWORD tmp;<br />
::GetCurrentDirectory(MAX_PATH,buffer);<br />
tmp = ::GetLastError();<br />
IUXLogData("are you ready\n",TRACE1);<br />
if (strstr(buffer,"C:\\iux\\data") == NULL){<br />
::SetCurrentDirectory("\\iux\\data");<br />
tmp = ::GetLastError();<br />
this->Invalidate();<br />
}<br />
}<br />
The SetCurrentDirectory I don't think works. The getlasterror returns a 183 after this function is run. You can see the different ways I've been trying to force the window to redraw with the new directory, but I'm not having any luck.
Any Suggestions?
Thanks alot!
Dan
|
|
|
|
|
You need to look at hook functions for common dialogs, specifically handling CDN_FOLDERCHANGE and/or CDN_SELCHANGE.
Steve S
|
|
|
|
|
Steve S wrote:
You need to look at hook functions for common dialogs, specifically handling CDN_FOLDERCHANGE and/or CDN_SELCHANGE.
Yup, been there done that.
|
|
|
|
|
While I can't say for sure since I don't know the entire situation, it seems a better approach would be to set permissions at the OS level. That way, CFileDialog does not have to do anything special. It only "goes" where the user has permission to.
|
|
|
|
|
That's an interesting idea. One that I like. But the people upstairs seem to want to go against what windows does with every other application so I'm stuck trying to limit directory access at this open/save as level.
Any other ideas? Other than creating an open/save as dialog from scratch which IMO makes no sense at all to re-invent the wheel
Thanks guys! I appreciate it!
Dan
|
|
|
|
|
will1383 wrote:
...which IMO makes no sense at all to re-invent the wheel.
They don't seem to mind so why should you? Let it be known (to the powers that be) that such a solution is non-standard and prone to problems.
I worked on a project once where it was decided that a dialog's "X" button and the Cancel button would each do different things. If the dialog was actually doing something, rather than just accepting input from the user, it had both Close and Cancel buttons. I hate it when goofy standards are put in place, only to propagate through the annals of the projects. Changing them requires an act of Congress.
|
|
|
|
|
So far so good in porting our code from 6.0 to .net2003. I have done a small part of this so far and most of the problems can be easly corrected. But, one item that I'm not having any success with is a define that is used in one of our files. The PR_EMS_AB_PROXY_ADDRESSES is defined in the EMSABTAG.H file in <VC 6 Install Dir>\VC98\Include. The problem is that .net2003 does not use the same file.
After looking up this define in the MSDN library, I see that is is now part of the Exchage Server SDK. I cannot find any downloads from the MSDN site (guess M$ wants $$ for this SDK!) so the problem can be fixed.
Does anyone out there who has ported from 6.0 to .net or someone developing with the .net using this define? If so, what do I need to use to get this to compile and keep the functionality?
Thank You In Advance
Larry J. Siddens
Cornerstone Communications
TAME THE DOCUMENT MONSTER
www.unifier.biz
|
|
|
|