|
If by "C++ form" you mean a CDialog or CFormView based window, then this post of mine shows how to set a bitmap as the background for your window.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Thanks, I appreciate it!!
|
|
|
|
|
I'm really new to programming, so please bear with me. The first two lines in the code you gave is: "CBitmap m_bitmap_background; BITMAP m_bmInfo_background;" Does this mean I have to right click on the DLG file in class view and add a member variable? What type would I use? I appreciate your help.
|
|
|
|
|
I'm really new to programming, so please bear with me.
Glad to be helpful I'll give you as thorough an explanation as I can (forgive me if some details are already obvious to you).
Well, There's four steps in getting the process done:- Have a bitmap loaded in your resources. I'm assuming the identifier of the bitmap is
IDB_BACKGROUND but you can change it to whatever pleases you most.
- Add the two variables
m_bitmap_background and m_bmInfo_background . The way to do it you suggest is just fine (types are CBitmap and BITMAP , respectively). You can also edit by hand the .h and insert directly the variables.
- Locate the
OnInitDialog of your dialog and insert the stuff where m_bitmap_background and m_bmInfo_background are set their values.
- Go to the class wizard (CTRL+W on most IDE installations) and add a message handler for
WM_ERASEBKGND . This gets you the OnEraseBkgnd method where you can insert the remaining piece of code. Good luck and welcome to MFC programming!
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I went to the class wizard and there is no WM_ERASEBKGND. I saw all the other choices and nothing to do with the background was there. Am I doing something wrong?
|
|
|
|
|
Oh, well, you've got to change the message filter so that WM_ERASEBKGND appears. I don't have the IDE handy, but you should go to the last tab in the class wizard dialog, look for a combo called "message filter" or something like that and select "Topmost frame".
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Thanks, I really appreciate all your help!
|
|
|
|
|
Is there any support within Visual C++ to data structure Graph (not Graphics)?
If not, does anyone know where I can find the resource related to it?
Thanks!
|
|
|
|
|
Boost features the Boost Graph Library, a highly portable (works with MSVC++ 6.0 too) graph library in the spirit of STL. It might seem a little hard to grasp at first, depending on your level of acquaintance with STL.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I am trying to use sockets to communicate between two processes. By default of course there is buffering going on. I need it to be more interactive, as the data being passed is then output to a CView. In certain cases it takes 30 seconds for the first data to show up.
If I look at the TRACE output in the VC IDE I can see that the data is being sent.
I have set the buffer size:
CNe_editorApp *pApp = (CNe_editorApp*) AfxGetApp();
// create socket
if (sock.Create(portnum) == 0) {
TRACE("Could not create socket\n");
::SendMessage(hWnd, UPM_JOBFINISHED, (WPARAM)NULL, (LPARAM)NULL);
return 1;
}
TRACE("Created socket\n");
int buffsize = 10 // bytes;
sock.SetSockOpt(SO_RCVBUF, &buffsize, 4, SOL_SOCKET);
but this hasn't seemed to helped.
Any ideas? Thanks.
Ted
|
|
|
|
|
I'd say buffering has nothing to do with your problem. It rather seems like program #2 is blocking on Receive due to lack of data from program #1, and unblocks after some timeout.
It'd be great if you can post the write and read loops of your two programs to help determine what's going on.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Hi,
I've written a document-view-application which draws boxes with fillings. I draw the fillings using a CRect and filling that with a hatched brush (HS_BDIAGONAL, HS_CROSS and so forth)....
All works well until I start scrolling. It looks as if the view just draws the part of the document in the view that was invisible, but became visible because of the scroll... It also looks as though the brush's origin just takes the first visible point to start drawing instead of really using the coordinates of the rect it fills (because the top part of the box was, at the time, outside the viewport)...
This results into wacky lines like this picture:
http://hioforum.ftn.hsbrabant.nl/data/wacky_lines.jpg
Any idea of how to fix this? I don't like rewriting to code to manually drawing the lines, but of course it is an option....
Structured programming vs. chaotic mind boggling
|
|
|
|
|
GDI is something I know close to zero about, but seems like SetBrushOrgEx is what you're looking for.
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
I have created a mdi application. when the program starts it opens a child dialog. but i can not get it to maximize to the parent window. i have tried placing wm_maximize in the create string for the dialog and in the oninitialupdate call showwindows(sw_maximize) both results give me a window about 75% of the parents size.
thank you for any insite.
|
|
|
|
|
Try this, I didn't try it but should work.
CYourDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CRect rc;
AfxGetMainWnd()->GetWindowRect(rc);
ScreenToClient(rc);
SetWindowPos(NULL, rc.left, rc.top, rc.Width(), rc.Height(), SWP_NOZORDER);
}
- God bless the World
|
|
|
|
|
Hello!
That's easy!
1. Overlapped the ActivateFrame method of the CChildFrame.
2. Add bold string to this method:
void CChildFrame::ActivateFrame(int nCmdShow)
{
nCmdShow = SW_SHOWMAXIMIZED;
CMDIChildWnd::ActivateFrame(nCmdShow);
}
That's all, Bye
Eugene Pustovoyt
Sonork ID 100.10002:Yaumen
|
|
|
|
|
|
CalcWindowRect for CFrameWnd
Hi, in MFC the class CFrameWnd do not have it's own implementation
of the virtual function CalcWindowRect. I need a CalcWindowRect which
given a certain-sized client rectangle, adds the heights and widths
of all the toolbars, menus, window frames, scrollbars and status bars.
Did I forget something? Have anyone already written one for lazy me
I could use?
Otherwise, I guess I have to do it myself. Anyone knows how to calculate
the height of the status bar? The following code do not work,
nStatusbarHeight is zero afterwards, however the status bar works fine,
I can update the text of the pane with index ID_INDICATOR_CAPS for example.
CRect rect;
m_wndStatusBar.GetItemRect(ID_INDICATOR_CAPS, rect);
int nStatusbarHeight = rect.Height();
Thanks for all input, Patric
|
|
|
|
|
From your description, it sounds like you're looking for the size of the entire window, including nonclient areas. Use GetWindowRect() for that.
--Mike--
My really out-of-date homepage
"Not our fault we are intellectually superior to the rest of the office." -- Paul Watson in the Lounge, 12/12/2001
Sonork - 100.10414 AcidHelm
Big fan of Alyson Hannigan.
|
|
|
|
|
I am interested in the size of the entire window, however not it's
current size. I want the application to set its own size. I know
the view's size. Now I want to set the size of my frame object, CMainFrm, so it is perfectly fits the view, with toolbars and everything. Therefore I need a CalcWindowRect for CFrameWnd.
/Patric
|
|
|
|
|
Maybe I'm totally missing your point, but I use the following snippet of code to adjust the frame's size to that of a CFormView (in CYourView::OnInitialUpdate )
GetParentFrame()->RecalcLayout();
ResizeParentToFit(FALSE); Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
OK, this was what I wanted, I looked into
CScrollView::ResizeParentToFit and ripped
some code, simplifyied it and put in my
view's OnInitialUpdate. It was easier than
implementing a CalcWindowRect in the mainframe
class.
/Patric
// Remove scroll bars.
SetScrollSizes(MM_TEXT, CSize(0, 0));
GetParentFrame()->RecalcLayout();
// Get the view's current size.
CRect rectViewCurrent;
GetClientRect(rectViewCurrent);
// Get the frame's current size.
CRect rectFrame;
GetParentFrame()->GetWindowRect(rectFrame);
// Calculate the needed space for toolbars, caption, statusbars and borders by
// subtracting the view's size from the frame's. Then calculate the desired size
// for the frame by adding rectsize to it.
CSize size;
size.cx = rectSize.Width() + rectFrame.Width() - rectViewCurrent.Width();
size.cy = rectSize.Height() + rectFrame.Height() - rectViewCurrent.Height();
// Finally, lets change the size of the frame to the one we want.
GetParentFrame()->SetWindowPos(NULL, 0, 0, size.cx, size.cy,
|
|
|
|
|
I'm trying to automate powerpoint(with a type library) so i can open a file in powerpoint from my app but it wont work, here's what i have:
Presentations pf;
CString file;
file = "C:\\My Documents\\Afwezigheden.ppt";
pf.Open(file,FALSE,TRUE,TRUE);
Can anyone tell me why it wont work?
(BTW everything else works, i can start powerpoint)
Kuniva
|
|
|
|
|
Hi,
How can i change English Date to Hijri Calender(Date) ?
My month article: Game programming by DirectX by Lan Mader.
Please visit in: www.geocities.com/hadi_rezaie/index.html
Hadi Rezaie
|
|
|
|
|
There are various algorithms that do this
I came across this one, It may help you
http://www.codearchive.com/newcode/comments/comments.cgi?section=c&codenumber=1612
|
|
|
|