|
to display a DC with different dimensions that originals you could use CDC::StretchBlt.
|
|
|
|
|
Depends of what the objects are. Please provide more information.
If you draw them yourself, then draw them bigger, that's simple.
|
|
|
|
|
Here's a little to get you started. Start a new MFC/SDI app and plop this stuff in the appropriate locations. Set up menu/toolbar buttons for the zoomin/zoomout. Add some drawing code to your OnDraw and you should find that the drawing is fit_to_width in the view and it should be fit to width when printing. The rest is up to you. have fun...
///////////////////////////////////////////////
//Constants
const int MAX_SCALE = 20; // The maximum scale factor
//CDocument members...
protected:
CSize m_DocSize;
CSize CYourDoc::GetDocSize() const
{
return m_DocSize;
}
CYourDoc::CYourDoc()
{
// TODO: add one-time construction code here
m_DocSize=CSize(2000,2800);
}
//CScrollView members...
protected:
int m_Scale;
CYourView::CYourView()
{
// TODO: add construction code here
m_Scale=1; // Set scale factor 1:1
SetScrollSizes(MM_TEXT,CSize(0,0)); // Set arbitrary values
}
void CYourView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)
{
CScrollView::OnPrepareDC(pDC);
// TODO: Add your specialized code here and/or call the base class
// Set up the DC for the current scale factor
int nExtentX;
int nExtentY;
CSize sizeDoc;
CRect rectClient;
// Allows the rectangle to include the bottom and rightmost logical unit
// SetGraphicsMode(pDC->m_hDC,GM_ADVANCED);
pDC->SetMapMode(MM_ISOTROPIC); // Allow scaling with aspect ratio preserved
// Get pertinent rectangle data
GetClientRect(&rectClient);
sizeDoc=GetDocument()->GetDocSize();
sizeDoc.cy=(-sizeDoc.cy); // Y goes down as it increments
pDC->SetWindowExt(sizeDoc); // Window extent is size of document
// Calculate viewport extent
nExtentX=(int)(GetScale()*rectClient.Width());
nExtentY=(int)((GetScale()*((nExtentX*sizeDoc.cy)/(sizeDoc.cx))));
// What kind of device context do we have?
if (pDC->IsPrinting()==TRUE) {
// Printer Context. Allow printing to edge of context. No scaling. Margins?
pDC->SetViewportExt(pDC->GetDeviceCaps(HORZRES),-pDC->GetDeviceCaps(VERTRES));
} else {
// Context is for screen
pDC->SetViewportExt(nExtentX,nExtentY);
}
}
int CYourView::GetScale()
{
return m_Scale;
}
void CYourView::SetScale(int nScaleFactor)
{
m_Scale=nScaleFactor;
ResetScrollBars(); // Adjust scrollbars to new scale
}
void CYourView::OnUpdateViewZoomout(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if (GetScale()>=2) pCmdUI->Enable(TRUE);
else pCmdUI->Enable(FALSE);
}
void CYourView::OnUpdateViewZoomin(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if (GetScale()<MAX_SCALE) pCmdUI->Enable(TRUE);
else pCmdUI->Enable(FALSE);
}
void CYourView::ResetScrollBars()
{
CSize sizeDoc;
CClientDC dc(this);
this->OnPrepareDC(&dc); // Update the device context
sizeDoc=GetDocument()->GetDocSize();
dc.LPtoDP(&sizeDoc); // Logical to device
this->SetScrollSizes(MM_TEXT,sizeDoc); // Update scrollbars
}
void CYourView::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
// TODO: calculate the total size of this view
ResetScrollBars();
}
void CYourView::OnSize(UINT nType, int cx, int cy)
{
CScrollView::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
ResetScrollBars();
}
// Toolbar/menu button handler
void CYourView::OnViewZoomin()
{
// TODO: Add your command handler code here
if (GetScale()<MAX_SCALE) SetScale(GetScale()+1);
Invalidate();
}
// Toolbar/menu button handler
void CYourView::OnViewZoomout()
{
// TODO: Add your command handler code here
if (GetScale()>=2) SetScale(GetScale()-1);
Invalidate();
}
-- modified at 9:09 Tuesday 2nd May, 2006
|
|
|
|
|
Hello comunity,
how to create an own messenger like MSN Messenger or Yahoo Messenger, they dont neet to have all the functions like the other, just to send and recive messages with other!?
Wich functions i need to use for that, does messenger works like chatserver???
regards
break;
|
|
|
|
|
Hi,
There are a few examples of messaging program on codeporject. I suggest download one of them look at it. Try to understand the various concepts involved e.g. client/server, connection vs. connectionless protocol, etc.. then write your own.
|
|
|
|
|
You want to make a server or client or both? Take a look at the XMPP protocol, recommeded by IETF, and is currently used by Google Talk.
http://www.xmpp.org/
You can find open source client and server implementations here.
http://www.jabber.org/
modified 29-Aug-18 21:01pm.
|
|
|
|
|
Hello,
thanx for your answers! I try with one of the examples in this community!
with best regards
break;
|
|
|
|
|
if we load an exe file in CMemFile object how can we run that exe file from there (memory)?
eg, CMemFile m_file;
....... // loaded exe into memory in binary format
.......
.......
WinExec("m_file",SH_SHOW);
above statement donot executes it looks in the directory for exe file m_file.exe.
All i want is to execute that program which is loaded in memory file from memory and not from disk.
|
|
|
|
|
This has been a frequently asked question. However, the consensus has always been that you cannot. See here.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"We will be known forever by the tracks we leave." - Native American Proverb
|
|
|
|
|
|
You can't do this, because the EXE that starts a process has to be an on-disk file. The OS loader gets the EXE into memory with a memory-mapped file.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
How to set the static edge/ client edge property of a dialog box to true at run time. Iam using SDK.
|
|
|
|
|
with ModifyStyle you can change some object styles
|
|
|
|
|
I need to test system in release mode using similar to TRACE(" %d %d\n", a,b) geting variable number of arguments to formated string but saveing it to some file. Is there some code available
|
|
|
|
|
To work with file, take a look at ofstream. You can do things like that:
ofstream File("MyFile.txt");
int Variable = 10;
File<<"Text"<<Variable<<endl;
|
|
|
|
|
how to handle variable number of arguments in function?
TRACE( ... )
{
//check how many argc
//out put them to file
file<<"arg1 type";
file<
|
|
|
|
|
And how do you manage that with the TRACE macro ? It should be the same.
-- modified at 7:28 Tuesday 2nd May, 2006
To take your example:
TRACE(" %d %d\n", a,b)
Would be:
File<<a<<b<<endl;
|
|
|
|
|
I'm not going to manage it with TRACE macro, I mentioned that I need to write similar function like TRACE for outputing formatted string to file
9ine
|
|
|
|
|
9ine wrote: I mentioned that I need to write similar function like TRACE
This part was not clear. Now I see what you want to do. I never worked with functions with variable arguments list but you can take a look at the MSDN[^].
|
|
|
|
|
9ine wrote: how to handle variable number of arguments in function?
See va_arg() , va_start() , va_list , and va_end() .
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"We will be known forever by the tracks we leave." - Native American Proverb
|
|
|
|
|
HI,
Your question doesn't explain itself fully.Please post some sort of relevant information on what type of application are you working on and some code if possible.
As far as I understand your question you want to write a formatted string to a file so You can use fprintf()
Vision is Always important and so is your ATTITUDE.
Wishes.
Anshuman Dandekar
-- modified at 7:31 Tuesday 2nd May, 2006
|
|
|
|
|
No I'd like to paste some "TRACE" like function in the release code which is run faster than in debug mode using TRACE().
When the code is executed we can output TRACE() messages to VC window but in release mode I'd like to substitute TRACE() function with something similar but puting its output to file
some hard C console app code:
....
....
TRACE(" %d %d", var1,var2);
...
...
change the same of TRACE() function to put (" %d %d", var1,var2) formated string to file by invoking just that function
9ine
|
|
|
|
|
Take a look at vfprintf .
Nibu thomas
Software Developer
|
|
|
|
|
Make couples of defines, and define TRACE to a function of yours in release mode.
In that function, do the formatting and file writing.
Then you can use the same TRACE-statements in debug as well as in relese mode, and the release-version vill write to a file of your choice.
I won't give you a code sample, since I'm likely to get flamed for it. But it can be done, quite easily.
Put your email address in your profile and I can email you a working example.
|
|
|
|
|
9ine@mail.ru
that would be great
9ine
|
|
|
|