|
I'm creating a dialog with a section of it used for drawing graphs. Following the design presented in the Fire sample supplied with VC++ 6.0, I inserted a Static control in the dialog, and attached it to my own "ZPlane" drawing object derived from CStatic.
Everything worked as expected until I drew a circle that went outside the dimensions of the Static control. For some reason, I can draw outside the the control as layed out in the dialog. I thought the DC constructed with the this pointer would return an object with "clipping" set to the size of the CStatic object inside the dialog, but it seems to have been constructed with a clipping region of the parent dialog box.
It's 3:30am, I'm tired, and will work on it some more tomorrow, but if you can point me in the right direction, I'd appreciate it. The question is, how do you set up the clipping region of the DC? I've tried a few of the DC set clip region commands, but to no avail.
If I call GetClientRect from my CStatic derived drawing object, I get the correct size of the Static control, and if I draw a rectangle based on that Rect, it's the size of the Static control. I'd like to specify the clipping region of the DC (I'm assuming you can do this) to the size of the Rect obtained with the GetClientRect.
Thanks.
|
|
|
|
|
I gave it one more shot...
Turns out the documentation for
CRgn::CreateRectRgnIndirect( LPCRECT lpRect );
specifies lpRect as containing the logical coordinates of the clipping rect. I found another example of drawing within a clipped area, and it used the device coordinates! I switched to device coordinates, and everything is working as expected.
Is there a problem with the docs???
Now I'm really going to bed!
|
|
|
|
|
ClientRect coordinates are always rooted at (0,0) and extend the width and the height of your window.
If your DC is being constructed for the entire dialog, and not just the static control that you have created, then if your static control is not rooted at (,0) then GetClientRect will not work for you.
You could try using ::GetWindowRect()< instead. It will contain the coordinates of your static control relative to the window that created the DC.
Good Luck
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
Hello,
I have created a MFC application (doc/view architecture) that is running in background (is not visible) and I print some reports from that application.
The problem is that the "Printing" dialog that comes up when a report is sent off to a printer is visible during the printing process.
How can I hide it?
Many thanks,
Vasile
|
|
|
|
|
You can probably, write your own pagination and printing
or track down the point at which dialog is being shown
in the mfc code and then override the function in your
own class and copy from the original function
and remove the dialog calling code.
|
|
|
|
|
Hi,
I have a custom ui application. If i keep on resizing the window in windows 98 it says resource not found.It is fine in xp ,2k.There is no resource leak are been reported from bouncechecker application.
What is wrong?
Regards
Neha
|
|
|
|
|
Are you using a function like transparentBlt? I know there is a resource leak in this function with windows 98.
Otherwise what other types of GDI functions are you using?
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
No,i won't use TransparentBlt. I know there is resource leak in that function.so i had used bitblt with SRCOR,SRCAND etc...
Other types are loadimage(),creatergnindirect(),createsolidbrush()..I am deleting all the objects created.
It is fine in 2k & XP.
I don't know what is wrong?
Thanks
Neha
|
|
|
|
|
I found that it is failing in CreateCompatibleDC().
Any idea?
Thanks
Neha
|
|
|
|
|
I've created a set of classes from the excel.exe (Excel 2002) type library using class wizard, and can insert my excel object in a view - all works a treat. But I'm trying to use the Worksheets::Add method and can't get it figured out, has anyone got any experience with this or could anyone let me know where I could find info about this?
TIA
Dylan
"In meetings, the person who is least competent usually does the most talking. Talking is a direct substitute for competence, at least in the minds of other people. Five minutes after you leave a meeting, you won't remember what anyone said but you will remember who did most of the talking. Withing a day your mind will translate that into a notion that the talker was unusually knowledgeable" - Scott Adams, Dilbert and the way of the weasel
|
|
|
|
|
Sorry, but I really haven't much experience in this area. Have you tried the COM forum? There's also some good automation articles on CP also. Try the advanced search, and search through the forums too. Good luck!
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
Dear all,
I was wondering if there is a way to generate random gaussian numbers with Visual C++.
Borland Builder has the option randg to do just this.
Many many thanks
Chun Te
|
|
|
|
|
Chun Te, Ewe wrote:
gaussin
What is that?
look up rand() in MSDN Library
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
Sorry for the typo.
The rand() just generates random numbers but not gaussian/normal distribution numbers.
Chun Te
|
|
|
|
|
Chun Te, Ewe wrote:
gaussian
Sorry, but I don't know what a gaussian number is!
Try go to www.msdn.microsoft.com and type in "gaussian" in the search field of "MSDN Library" and then see if you find something.
Cheers!
Rickard Andersson@Suza Computing
C# and C++ programmer from SWEDEN!
UIN: 50302279
E-Mail: nikado@pc.nu
Speciality: I love C#, ASP.NET and C++!
|
|
|
|
|
Rickard Andersson wrote:
Sorry, but I don't know what a gaussian number is!
It's not a gaussian number, it's a gaussian distribution. Let's pick a simple example: if you plot people's weight x #number of people with a specific weight, you'll get a gaussian distribution: most samples will concentrate on the middle of the graphic and less people on the borders.
Gaussian distribution are also know as Normal distributions. It's know as the "bell curve" too. A picture worth more than a thousand words. See This article[^]
I see dumb people
|
|
|
|
|
|
|
You did not even try to search CP for it, did you?
Its here[^]for example.
--
"My opinions may have changed, but not the fact that I am right."
Found in the sig of Herbert Kaminski
|
|
|
|
|
Hehehe, I got you by a minute!
I see dumb people
|
|
|
|
|
I've found a mathematical formula to do this now. It assume zero mean and it is written in MatLab.
sigma = 2; %The std deviation<br />
x1 = rand(1000,1); %Linear rand number between 0.0 to 1.0<br />
x2 = rand(1000,1);<br />
<br />
z = sqrt(-2*sigma*log(x1)) * cos(2*pi*x2);
the log here is ln, that is log to the base e. Now all we need is just to put it in C.
Thanks to all who replied my post.
|
|
|
|
|
You can use the code you listed to generate normal variates, but I believe you will get garbage out in the tails of the distribution. The random number generator that is packaged with C is not very good. I suggest you find a better one...there are plenty of them out on the web.
Here is an example
http://www.cs.wm.edu/~va/software/park/park.html
Gary Kirkham
A working Program is one that has only unobserved bugs
|
|
|
|
|
Thanks for the suggestion. I look into it.
|
|
|
|
|
I am trying to do a grid on a window, but it's not working right.
It is a MDI program using MFC.
When I scroll the window by clicking on the scrollbar(pagefull), it works fine
When I scroll by clicking on the scroll arrow, no new grid lines get drawn
When I scroll by dragging the scroll button, only some new grid liens get drawn
I have made the window using the CS_HREDRAW | CS_VREDRAW class style.
The window is made of 1026x1026 tiles, each tile being 16x16 pixels
CRect r;<br />
VERIFY(dc.GetClipBox(&r) != ERROR);<br />
<br />
CBrush *b = new CBrush(theApp.m_gridColor), *ob;<br />
CPen *p = new CPen(PS_SOLID, 1, theApp.m_gridColor), *op;<br />
<br />
ob = (CBrush*)dc.SelectObject(b);<br />
op = (CPen*)dc.SelectObject(p);<br />
<br />
x = r.left >> 4;<br />
x2 = r.right >> 4;<br />
y = r.top >> 4;<br />
y2 = r.bottom >> 4;<br />
<br />
<br />
for (Sint32 i = x; i < x2; i++)<br />
{<br />
dc.MoveTo(i << 4, r.top);<br />
dc.LineTo(i << 4, r.bottom);<br />
<br />
if (i % theApp.m_thickGridInterval == 0)<br />
{<br />
dc.MoveTo((i << 4) + 1, r.top);<br />
dc.LineTo((i << 4) + 1, r.bottom);<br />
}<br />
}
|
|
|
|
|
How to detect whether the balloon tips of tray icon has been clicked or timeout on Win2K?
On WinXP, I can receive the message NIN_BALLOONTIMEOUT and NIN_BALLOONUSERCLICK when balloon hide because timeout or click on it. But on Win2K, I have got nothing.
Advise please.
Thanks in advance!
Sincerely yours,
Forrest;P
|
|
|
|