|
Thanks, I will try it if I can't find a better way, a timer is a little expensive.
|
|
|
|
|
Maybe with a bit more info... What for a secuence do u want to achieve? Say it in Pseudocode
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
|
|
|
|
|
For example:
1. I draw a circle in the client area
2. Press "up" to increase the radius or press "down" to decrease the radius
3. draw again
I want to show the user continuous changing of the shape of the circle, like 10->9->8->7->6->7->8->...,not like 10->8->4->...
|
|
|
|
|
It is normal on my computer with ATI7500,
but not the the customer's with Nvidia6200LE.
The resolutions are the same, 1024*768.
The problem occurs when I change the parameters in
SetWindowExt,SetWindowOrg,SetViewportExt,SetViewportOrg
Here is code of the function OnPaint. Any Bug?
<br />
void CChildView::OnPaint() <br />
{<br />
CPaintDC dc(this);
<br />
if (m_CntTotalRc==0) return;<br />
<br />
CRect rt;<br />
GetClientRect(&rt);<br />
<br />
CString SqlCmd;<br />
int X=m_UnitsPerHemline*m_CntDispGrp;<br />
UINT i=0;<br />
float Volt=0.f;<br />
int DeltaY0=0;<br />
int DeltaY1=0;<br />
int DeltaY5=-1;<br />
int DeltaY10=-1;<br />
int DeltaY20=-1;<br />
int DeltaY30=-1;<br />
int DeltaYA=10000;<br />
int DeltaYN=10000;<br />
int DeltaYZ=10000;<br />
int DeltaYJ=10000;<br />
int DeltaYY=10000;<br />
<br />
CPen *pOldPen=NULL;<br />
<br />
<br />
pOldPen=dc.SelectObject(&m_RPen);<br />
dc.MoveTo(m_LeftMargin,0);<br />
dc.LineTo(m_LeftMargin,rt.Height()-m_BottomMargin);<br />
dc.LineTo(rt.Width(),rt.Height()-m_BottomMargin);<br />
dc.MoveTo(m_LeftMargin,int(rt.Height()*0.5f));<br />
dc.LineTo(rt.Width(),int(rt.Height()*0.5f));<br />
<br />
int OldDC=dc.SaveDC();<br />
dc.SetBkMode(TRANSPARENT);<br />
dc.SetTextColor(RGB(255,0,0));<br />
<br />
float fDeltaY=(m_DispMaxVolt-m_DispMinVolt)*0.2f;<br />
Volt=m_DispMinVolt;<br />
int iDeltaY=int(rt.Height()*0.1f);<br />
int Y=int(rt.Height()*0.5f);<br />
CRect RtText(0,int(rt.Height()*0.5f)-10,m_LeftMargin-2,int(rt.Height()*0.5f)+10);<br />
SqlCmd.Format("%.2f",Volt);<br />
dc.SelectObject(&m_RPen);<br />
RtText.OffsetRect(0,-10);<br />
dc.DrawText(SqlCmd,&RtText,DT_RIGHT|DT_BOTTOM);<br />
RtText.OffsetRect(0,10);<br />
for (i=1;i<6;++i) {<br />
Y-=iDeltaY;<br />
Volt+=fDeltaY;<br />
RtText.OffsetRect(0,-iDeltaY);<br />
if (i==5)<br />
RtText.OffsetRect(0,10);<br />
SqlCmd.Format("%.2f",Volt);<br />
dc.SelectObject(&m_RPen);<br />
dc.DrawText(SqlCmd,&RtText,DT_RIGHT|DT_BOTTOM);<br />
dc.SelectObject(&m_RDashPen);<br />
dc.MoveTo(m_LeftMargin,Y);<br />
dc.LineTo(rt.Width(),Y);<br />
}<br />
<br />
if (m_AN_ZJY==1 && m_AN_Valid) {
fDeltaY=(m_DispMaxAN-m_DispMinAN)*0.2f;<br />
Volt=m_DispMinAN;
iDeltaY=int( (rt.Height()*0.5f-m_BottomMargin)*0.2f );<br />
Y=rt.Height()-m_BottomMargin;<br />
RtText.SetRect(0,rt.Height()-m_BottomMargin-10,m_LeftMargin-2,rt.Height()-m_BottomMargin+10);<br />
SqlCmd.Format("%.2f",Volt);<br />
dc.SelectObject(&m_RPen);<br />
dc.DrawText(SqlCmd,&RtText,DT_RIGHT|DT_BOTTOM);<br />
for (i=1;i<5;++i) {<br />
Y-=iDeltaY;<br />
Volt+=fDeltaY;<br />
RtText.OffsetRect(0,-iDeltaY);<br />
SqlCmd.Format("%.2f",Volt);<br />
dc.SelectObject(&m_RPen);<br />
dc.DrawText(SqlCmd,&RtText,DT_RIGHT|DT_BOTTOM);<br />
dc.SelectObject(&m_RDashPen);<br />
dc.MoveTo(m_LeftMargin,Y);<br />
dc.LineTo(rt.Width(),Y);<br />
}<br />
Y-=iDeltaY;<br />
Volt+=fDeltaY;<br />
RtText.OffsetRect(0,-iDeltaY+10);<br />
SqlCmd.Format("%.2f",Volt);<br />
dc.SelectObject(&m_RPen);<br />
dc.DrawText(SqlCmd,&RtText,DT_RIGHT|DT_BOTTOM);<br />
} else if (m_AN_ZJY==2 && m_ZJY_Valid) {
}<br />
dc.RestoreDC(OldDC);<br />
<br />
dc.SetMapMode(MM_ANISOTROPIC);<br />
m_pRs->MoveLast();<br />
for (i=0;i<m_CntDispGrp;++i) {<br />
ASSERT(m_Tri_Valid);<br />
dc.SetWindowExt(m_WinXExt,-m_WinYExt);<br />
dc.SetViewportExt(rt.Width()-m_LeftMargin,int(rt.Height()*0.5f));<br />
dc.SetWindowOrg(0,0);<br />
dc.SetViewportOrg(m_LeftMargin,int(rt.Height()*0.5f));<br />
<br />
dc.SelectObject(&m_GPen);<br />
<br />
Volt=float(m_pRs->GetCollect("first"));<br />
DeltaY0=int(Volt*100-m_DispMinVolt*100+0.5f);<br />
dc.MoveTo(X,DeltaY0);<br />
dc.LineTo(X-m_UnitsPerHemline,DeltaY0);<br />
Volt=float(m_pRs->GetCollect("last"));<br />
DeltaY1=int(Volt*100-m_DispMinVolt*100+0.5f);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.5f),DeltaY1);<br />
dc.LineTo(X,DeltaY0);<br />
<br />
Volt=float(m_pRs->GetCollect("max"));<br />
DeltaY1=int(Volt*100-m_DispMinVolt*100+0.5f);<br />
dc.MoveTo(X-int(m_UnitsPerHemline*0.5f),DeltaY1);<br />
Volt=float(m_pRs->GetCollect("min"));<br />
DeltaY1=int(Volt*100-m_DispMinVolt*100+0.5f);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.5f),DeltaY1);<br />
<br />
_variant_t var;<br />
<br />
var=m_pRs->GetCollect("ma5");<br />
float MA5;<br />
if (var.vt==VT_NULL) {<br />
MA5=0.f;<br />
} else {<br />
MA5=float(var);<br />
if (DeltaY5>=0) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.5f),DeltaY5);<br />
DeltaY5=int(MA5*100-m_DispMinVolt*100+0.5f);<br />
dc.SelectObject(&m_RPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.5f),DeltaY5); <br />
} else {<br />
DeltaY5=int(MA5*100-m_DispMinVolt*100+0.5f);<br />
}<br />
}<br />
<br />
var=m_pRs->GetCollect("ma10");<br />
float MA10;<br />
if (var.vt==VT_NULL) {<br />
MA10=0.f;<br />
} else {<br />
MA10=float(var);<br />
if (DeltaY10>=0) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.50f),DeltaY10);<br />
DeltaY10=int(MA10*100-m_DispMinVolt*100+0.5f);<br />
dc.SelectObject(&m_YPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.50f),DeltaY10); <br />
} else {<br />
DeltaY10=int(MA10*100-m_DispMinVolt*100+0.5f);<br />
}<br />
}<br />
<br />
var=m_pRs->GetCollect("ma20");<br />
float MA20;<br />
if (var.vt==VT_NULL) {<br />
MA20=0.f;<br />
} else {<br />
MA20=float(var);<br />
if (DeltaY20>=0) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.50f),DeltaY20);<br />
DeltaY20=int(MA20*100-m_DispMinVolt*100+0.5f);<br />
dc.SelectObject(&m_BPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.50f),DeltaY20); <br />
} else {<br />
DeltaY20=int(MA20*100-m_DispMinVolt*100+0.5f);<br />
}<br />
}<br />
<br />
var=m_pRs->GetCollect("ma30");<br />
float MA30;<br />
if (var.vt==VT_NULL) {<br />
MA30=0.f;<br />
} else {<br />
MA30=float(var);<br />
if (DeltaY30>=0) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.50f),DeltaY30);<br />
DeltaY30=int(MA30*100-m_DispMinVolt*100+0.5f);<br />
dc.SelectObject(&m_WPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.50f),DeltaY30); <br />
} else {<br />
DeltaY30=int(MA30*100-m_DispMinVolt*100+0.5f);<br />
}<br />
}<br />
<br />
if (m_AN_ZJY==1 && m_AN_Valid) {
dc.SetWindowExt(m_WinXExt,-m_WinYExtAN);<br />
dc.SetViewportExt(rt.Width()-m_LeftMargin,int(rt.Height()*0.5f)-m_BottomMargin);<br />
dc.SetWindowOrg(0,0);<br />
dc.SetViewportOrg(m_LeftMargin,int(rt.Height())-m_BottomMargin);<br />
var=m_pRs->GetCollect("a");<br />
float A;<br />
if (var.vt==VT_NULL) {<br />
A=0.f;<br />
} else {<br />
A=float(var);<br />
if (DeltaYA!=10000) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.50f),DeltaYA);<br />
DeltaYA=int(A*100-m_DispMinAN*100+0.5f);<br />
dc.SelectObject(&m_RPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.50f),DeltaYA); <br />
} else {<br />
DeltaYA=int(A*100-m_DispMinAN*100+0.5f);<br />
}<br />
}<br />
<br />
var=m_pRs->GetCollect("n");<br />
float N;<br />
if (var.vt==VT_NULL) {<br />
N=0.f;<br />
} else {<br />
N=float(var);<br />
if (DeltaYN!=10000) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.50f),DeltaYN);<br />
DeltaYN=int(N*100-m_DispMinAN*100+0.5f);<br />
dc.SelectObject(&m_YPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.50f),DeltaYN); <br />
} else {<br />
DeltaYN=int(N*100-m_DispMinAN*100+0.5f);<br />
}<br />
}<br />
} else if (m_AN_ZJY==2 && m_ZJY_Valid) {
dc.SetWindowExt(m_WinXExt,-m_WinYExtZJY);<br />
dc.SetViewportExt(rt.Width()-m_LeftMargin,int(rt.Height()*0.5f)-m_BottomMargin);<br />
dc.SetWindowOrg(0,0);<br />
dc.SetViewportOrg(m_LeftMargin,int(rt.Height())-m_BottomMargin);<br />
<br />
var=m_pRs->GetCollect("z");<br />
float Z;<br />
if (var.vt==VT_NULL) {<br />
Z=0.f;<br />
} else {<br />
Z=float(var);<br />
if (DeltaYZ!=10000) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.5f),DeltaYZ);<br />
DeltaYZ=int(Z-m_DispMinZJY+0.5f);<br />
dc.SelectObject(&m_RPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.5f),DeltaYZ);<br />
} else {<br />
DeltaYZ=int(Z-m_DispMinZJY+0.5f);<br />
}<br />
}<br />
var=m_pRs->GetCollect("j");<br />
float J;<br />
if (var.vt==VT_NULL) {<br />
J=0.f;<br />
} else {<br />
J=float(var);<br />
if (DeltaYJ!=10000) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.5f),DeltaYJ);<br />
DeltaYJ=int(J-m_DispMinZJY+0.5f);<br />
dc.SelectObject(&m_YPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.5f),DeltaYJ);<br />
} else {<br />
DeltaYJ=int(J-m_DispMinZJY+0.5f);<br />
}<br />
}<br />
var=m_pRs->GetCollect("y");<br />
float Y;<br />
if (var.vt==VT_NULL) {<br />
Y=0.f;<br />
} else {<br />
Y=float(var);<br />
if (DeltaYY!=10000) {<br />
dc.MoveTo(X+int(m_UnitsPerHemline*0.5f),DeltaYY);<br />
DeltaYY=int(Y-m_DispMinZJY+0.5f);<br />
dc.SelectObject(&m_BPen);<br />
dc.LineTo(X-int(m_UnitsPerHemline*0.5f),DeltaYY);<br />
} else {<br />
DeltaYY=int(Y-m_DispMinZJY+0.5f);<br />
}<br />
}<br />
}<br />
X-=m_UnitsPerHemline;<br />
m_pRs->MovePrevious();<br />
}<br />
dc.SelectObject(pOldPen);<br />
}<br />
-- modified at 23:14 Friday 16th November, 2007
|
|
|
|
|
OMG... can you not limite the code? too long
Ah, and use < pre > insteads of < code > please
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
“The First Rule of Program Optimization: Don't do it. The Second Rule of Program Optimization (for experts only!): Don't do it yet.” - Michael A. Jackson
|
|
|
|
|
unsigned char* pImg1=new unsigned char[40+120*30];
unsigned char* pImg2=new unsigned char[40+92*30];
unsigned char* pDib1=pImg1+40;
unsigned char* pDib2=pImg2+40;
//int the next codes i give the pDib2 values to pDib1, assume, i have
//given the pImg2 values before
for(int i=0;i<30;i++)
{
int k=0;
for(int j=0;j<90; )
{
pDib1[i*120+j+k]=pDib2[i*92+j++];
pDib1[i*120+j+k]=pDib2[i*92+j++];
pDib1[i*120+j+k]=pDib2[i*92+j++];
pDib1[i*120+j+k]=0;
}
}
delete []pImg1;
delete []pImg2;
when i want to delete the two pointers, there is debug error! i suspect the pImg1 memory space is bigger than its defination, but from the upper loop, the last value is pDib[29*120*90+29]=pDib[2599], the memory spance is just equal to the defination, what the matter?
thanks first
|
|
|
|
|
I have tested the code in VC6, no error.
Consider whether you used the memory after the delocation.
|
|
|
|
|
Your illegal access is where j is reaching 90 when i is 30, the array bounds are 120*30, not 120*30 + 90 for pDib1, so "+ j" is taking you outside of the array.
Is this code doing what you want? The k variable here is redundant.
...
int k=0; // k = 0
for(int j=0;j<90; ) // k not modified
{
pDib1[i*120+j+k]=pDib2[i*92+j++]; // k not modified
pDib1[i*120+j+k]=pDib2[i*92+j++]; // etc...
pDib1[i*120+j+k]=pDib2[i*92+j++];
pDib1[i*120+j+k]=0;
}
Also, a much better way to access an array like this is to increment to vars by 120 and 92 for each loop with i, saves the continual multiplication by constants, a slow down which dwarfs any speed benefit you gain from putting your increment inside the index. Consider:
int a=0, b=0;
for(int i=0;i<30;++i)
{
for(int j=0;j<90;j+=3)
{
pDib1[a+j]=pDib2[b+j];
pDib1[a+j]=pDib2[b+j+1];
pDib1[a+j]=pDib2[b+j+2];
pDib1[a+j]=0;
}
a+=120;
b+=92;
}
This is faster and more legible (and still broken!).
Hope this helps.
|
|
|
|
|
thanks Jheriko++:
it was my fault that i forgot writting a code line:
int k=0;
for(int j=0;j<90; ) {
pDib1[i*120+j+k]=pDib2[i*92+j++];
pDib1[i*120+j+k]=pDib2[i*92+j++];
pDib1[i*120+j+k]=pDib2[i*92+j++];
pDib1[i*120+j+k]=0;
k++;// k is modified here!
}
my expectiong is that:
//first loop
pDib1[0]=pDib2[0];
pDib1[1]=pDib2[1];
pDib1[2]=pDib2[2];
pDib1[3]=0;
//secont loop
pDib1[4]=pDib2[3];
pDib1[5]=pDib2[4];
pDib1[6]=pDib2[5];
pDib1[7]=0;
//the third loop
pDib1[8]=pDib2[6];
pDib1[9]=pDib2[7];
pDib1[10]=pDib2[8];
pDib1[11]=0;
//and so on
//that int pDib1, every 4 numbers are one team, in pDib2, every 3 numbers are one team
|
|
|
|
|
<root>
<mynode version="1.0">aaaa
i am using VC 6 to read and write xml file content with MSXML component.
but i cannot find a way to get all the xml content like the property "innerxml" in .NET class.
can anyone tell me how to implement this? thanks a lot
|
|
|
|
|
It is not obvious what you are asking based upon the information you have provided.
Please be specific about what you are trying to do, how you are trying to do it, and provide some code snippets if possible to increase the possibility that someone might know a way to help.
|
|
|
|
|
I have a popup menu defined as a resource and want to insert it into the apps main menu between the File and Edit menu items. How do I get this done.
Thanks in advance
Tony Teveris
Gerber Scientific Products
Senior Software Engineer
Phone: 860 648 8151
Fax: 860 648 8214
83 Gerber Road West
South Windsor, CT 06074
|
|
|
|
|
|
Looks like this will do. I will give it a try.
Many thanks
Tony Teveris
Gerber Scientific Products
Senior Software Engineer
Phone: 860 648 8151
Fax: 860 648 8214
83 Gerber Road West
South Windsor, CT 06074
|
|
|
|
|
|
I get an initialization failure sometimes when I run my program.
"The application failed to initialize properly (0xc0000142). Click on OK to terminate the application."
What is 0xc0000142? Where can I find what it means?
Once I get this error, its the same everytime I run it. Until I restart my computer, then everything works fine. Then at seemingly random times during development, I get this error again. And it wont go away until I restart.
|
|
|
|
|
acerunner316 wrote: "The application failed to initialize properly (0xc0000142). Click on OK to terminate the application."
What is 0xc0000142? Where can I find what it means?
Which ActiveX control are you using in your programme
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Im not using any. I'm only using the regular MFC dialog controls.
|
|
|
|
|
|
What is this supposed to do ?
What is the unexpected result ?
Have you trace the code ?
Do you know where is starts to "misbehave" ?
|
|
|
|
|
So which of the function calls is suspect?
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
What OS are you in? Vista has changed this stuff....
Vista has made all the audio stuff 'virtual' -- which means that, by default, you're only altering the settings for you own program - not the system.
I have the same bug in my app...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
<A HREF="http://www.soonr.com">SoonR Inc -- PC Power delivered to your phone</A>
|
|
|
|
|
Peter Weyzen wrote: What OS are you in?
Does it matter (what I use to reply with)?
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
You should be able to step through and debug this.
After each successful mixerXXXX() call, inspect the structures.
Are you getting the expected line and control?
If the line is wrong, is dwComponentType wrong?
etc...
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
azigrec wrote: result = mixerOpen(&hMixer, MIXER_OBJECTF_MIXER, 0, 0, 0);
I always see the MIXER_OBJECTF_MIXER flag passed as the second parameter to mixerOpen().
Where did that come from? Did MS do that in one of their code samples long ago?
It's not really correct - it just happens to work most of the time since its value is 0.
What if that's not the device you want though?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|