|
Declare your global variables in one of the .h, and declare them also in the other one where you need them, but put extern before all declaration.
~RaGE();
|
|
|
|
|
Ok, Rage, I'll try your suggestion after John's
thanks!
Ricky
|
|
|
|
|
Ricky_TheBard wrote:
I need global variables.
If you need using global variables, then you may consider redesinging your application... Global variables are not your friend in an OO environment.
Best regards,
Alexandru Savescu
P.S. Interested in art? Visit this!
|
|
|
|
|
I've used IPicture to provide a resizable imagepanel in my application. It only took me 10 minutes to implement it. It's very straightforward.
When I resize my app, the picture resizes along.
But I don't want the picture to be just resized. It's fast, but there's a great loss off quality.
So, is there some sort of way to "resample" an IPicture? Using various resample-filters?
There's no function to do that inside IPicture, I think. But during a search on google, an IPicture2 turned up, with a Resample(x,y) function in it. Is there someone who knows more about it?
tnx
using: [VISUAL STUDIO 6.0 sp5] [WIN98/2]
|
|
|
|
|
i have a CFrameWnd inside of a CSplitterWnd pane. when it first appears, it has size of, say 500x300. then assume i resize the frame manually, to 600x500. simple enough so far.
the OnPaint handler of the CFrameWnd looks like this:
void cDataExpressInternalFrameWnd::OnPaint()
{
CPaintDC dc(this);
CRect client_rect;
GetClientRect(&client_rect);
afxDump << "fv " << client_rect << "\n";
}
all i do is trace out the client rect of the frame wnd.
but... if i invalidate a part of the frame, by resizing or by dragging another window on top of it, the CFrameWnd's client area redraws like this:
fv (0, 0, 500, 300)
fv (0, 0, 600, 500)
fv (0, 0, 500, 300)
fv (0, 0, 600, 500)
fv (0, 0, 500, 300)
fv (0, 0, 600, 500)
...
in other words, each time the CFrameWnd is invalidated, it draws twice: once at the initial size (500x300, in this example) and then once at the new size (600x500).
i can't figure out why the client rect keeps reverting back to the original size. i'm not resizing the frame wnd back to that size anywhere.
has anyone ever seen this?
-c
To vote with no response is to follow the way of the coward.
|
|
|
|
|
That's interesting. I've never noticed this behaviour before.
I am wondering if it needs the initial values to retain the aspect
ratio??
Let me know if you figure it out.
|
|
|
|
|
I have the following bit of code:
vector<double>::iterator itr;
for (itr = dmStack.begin(); itr != dmStack.end(); ++itr)
{
TRACE("Node Number: %d ", i);
TRACE("Node Energy: %d \n", *itr);
i++;
}
Node energy values are usually in the range of 1x10^(-16). If I send
the value of i and *itr to stdout (console) they are displayed properly,
however, if I send them to the Debug window of the vc++ IDE (using TRACE()), I get:
Node Number: 0 Node Energy: -1684540248
Node Number: 1 Node Energy: -1684540248
Node Number: 2 Node Energy: 0
Node Number: 3 Node Energy: 0
Node Number: 4 Node Energy: 391017576
(Energies should never be negative or excessively large.)
I suspect that I am not formatting the output properly. I could have
sworn it was %d that I wanted - is that not correct?
|
|
|
|
|
If I remember correctly, I've read somewhere here on CP that it is not possible to output STL things with the TRACE command using an iterator.
~RaGE();
|
|
|
|
|
Oh no, really?
Do you know where that post/article would be by any chance?
|
|
|
|
|
I found that this works:
vector<double>::iterator itr;
for (itr = dmStack.begin(); itr != dmStack.end(); ++itr)
{
TRACE("Node Number: %d ", i);
TRACE("Node Energy: %e\n", *itr);
i++;
}
|
|
|
|
|
OK. Nevermind.
~RaGE();
|
|
|
|
|
Hi John,
*itr is a double.
The format string that you are using in "Node Energy: %d \n", which formats an int.
You need to use "Node Entry: %lf \n".
Best regards,
John
|
|
|
|
|
Thanks for the suggestion.
I tried that, but I kept getting 0.00000, so I looked up
c++ format specifiers.
I discovered that
TRACE("Node Energy: %e\n", *itr);
works perfectly.
|
|
|
|
|
Hi,
I have a dialog that have a bitmap as background. When I put control on the dialog, I can see the surrounding white rectangle around the controls. Is there a way to see my background around the controls and not the white rectangle?
for example, suppose that I have a CStatic with text in it, is there a way to to see the bitmap behind the text?
thanks
Everything's beautiful if you look at it long enough...
|
|
|
|
|
Does enabling the Transparent property (when right-clicking on the control in the ressource editor) change something ?
~RaGE();
|
|
|
|
|
No, enabling the transparent property don't change anything. I have been able to make it work throught OnPaint() redefinition in a CStatic control, but I cannot use to make it work for other controls such as CButton (radio button)
for CStatic, in the OnPaint of the control you can use:
dc.setBkMode(TRANSPARENT)
dc.DrawText(...)
Everything's beautiful if you look at it long enough...
|
|
|
|
|
Try adding a handler for OnEraseBkgnd and either doing nothing or erasing the background with a hollow brush. ex:
BOOL MyDialog::OnEraseBkgnd( CDC* pDC )
{
return TRUE;
}
|
|
|
|
|
Well,
I doesn't seem to work, I also tried to use:
HBRUSH RightDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = ShapedDlg::OnCtlColor(pDC, pWnd, nCtlColor);
if ( pWnd->GetDlgCtrlID() == IDC_RADIO1)
{
// m_bkbrush is a CBrush member variable
m_bkbrush.CreateStockObject(HOLLOW_BRUSH);
pDC->SetBkMode ( TRANSPARENT );
return m_bkbrush;
}
return hbr;
}
If I use BLACK_BRUSH, I will see a black background if I use GREY_BRUSH I will see grey background, but HOLLOW_BRUSH give me a strange blue background.
Everything's beautiful if you look at it long enough...
|
|
|
|
|
Hi
Any one have a link to a free electronic book cover Drivers for Win 2000 & Hook Drivers
Please
Thanks Very much
|
|
|
|
|
Dear All,
I am developing a security/recovery software (in MFC, Visual C++ for Windows 2000/XP/NT).
Presently I am storing password for opening my application in Registry key.
=>ie.HKEY_LOCAL_MACHINE\SOFTWARE\MyApplication\Settings.
But I feel that this key can easily be hacked. And anybody can easily delete this key.
My question is:
1) How can I change the security settings of my password registry key so that any user may not be
able to open or delete key ?
2) Are there any other secure methods to store the passwords? Can we store password in .sys file
which are always in memory ???
Please give your useful suggestions.
Thanks in advance!
Rohit Dhamija
|
|
|
|
|
Hi,
storing passwords is never a good idea. And most passwords are so short, that even the best encryption must fail.
One method I use, is not to store the password, but doing three to five different calculations with the password and the user name, and store these results.
When the user logs in, the computation is done again, and the results are compared with the stored values.
If you do the calculation with non commutative operators like -(minus) or matrix multiplications, you can't tell the the password. Never.
Care must be taken, to avoid that similiar passwords create similiar results.
for instance:
Make all inputs the same length by repeating the input/password till all spaces are filled. Then XOR all characters with a given string. Now do adding and substracting of the characters like : result += (3*XORinput[i] -5*XORpassword[i] + 7*somestring[i]), where i is running from 0 to the string length minus 1.
By exchanging the operators(+/-) and constant factors(3,5,7) you get different results, some positve and negative. Store these results. And only when all results match, the identification is verified.
G. Steudtel
|
|
|
|
|
G. Steudtel wrote:
Care must be taken, to avoid that similiar passwords create similiar results.
Better use one-way hash functions. These have been proven to be mathematically hard, or at least you know how much cmpute-power one need to break them.
A lot of free implementations are somewhere out there.
My opinions may have changed, but not the fact that I am right.
|
|
|
|
|
Hi,
i have plenty of errors in my code. Help Plz
void trl_calculation(int amount, unsigned char*pData, unsigned char sl)
{
unsigned char NrTrlValues;
unsigned char location;
unsigned char perc;
unsigned char time;
unsigned char *realTrlValues = NULL;;
pTrlValues = (unsigned char*) malloc(amount*sizeof(unsigned char)); //error C2440, error C2106:
for (int i=1; i < amount; i++)
{
pTrlValues[i] = (unsigned char) pData[location]; //error C2109:
if
((pData[location] - sl < 0) && (pData[location + 1] - sl ) > 0)||
((pData[location] - sl > 0) && (pData[location +1 ] - sl < 0)) //error C2143
perc = (sl - pData[location])/(pData[location + 1]) - pData[location];
time = location * 0.00000001923 + (((location * 0.00000001923) + 1) - (location * 0.00000001923))* perc;
//warning C4244
if
pData[location] - sl =0;//error C2061
pTrlValues [i] = location * 0.00000001923;//error C2109, warning 4244,error C2106:
realTrlValues[i] = pTrlValues[i+1] - pTrlValues[i];
//error C2106,arning4244
}
}
void histogram (long amount,unsigned char pTrlValues,unsigned char NrTrlValues)
{
int i_index;
const double Duration = amount/4096;
double histogram_ram[4096];
pTrlValues = (unsigned char*) malloc(amount*sizeof(unsigned char));//error C2440
for (int i=1; i <= amount; i++)
{
i_index = static_cast< unsigned int >(ceil(pTrlValues[i]/Duration)) + 1;//error C2109
histogram_ram[i_index]=histogram_ram[i_index]+1;
}
}
error C2440: '=' : cannot convert from 'unsigned char *' to 'unsigned char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
error C2109: subscript requires array or pointer type
error C2106: '=' : left operand must be l-value
error C2143: syntax error : missing ';' before '||'
warning C4244: '=' : conversion from 'double' to 'unsigned char', possible loss of data
error C2061: syntax error : identifier 'pData'
error C2109: subscript requires array or pointer type
warning C4244: '=' : conversion from 'double' to 'unsigned char', possible loss of data
error C2106: '=' : left operand must be l-value
error C2109: subscript requires array or pointer type
(625) : error C2109: subscript requires array or pointer type
warning C4244: '=' : conversion from 'int' to 'unsigned char', possible loss of data
error C2440: '=' : cannot convert from 'unsigned char *' to 'unsigned char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
error C2109: subscript requires array or pointer type
F.K
|
|
|
|
|
flora_k wrote:
unsigned char NrTrlValues;
unsigned char location;
unsigned char perc;
unsigned char time;
These all are very probably meant to be pointers. That is what the compiler keeps telling you. The other errors are most probably coming from this one.
So please declare your variables as pointers to unsigned chars (instead of as unsigned char itself) and report back.
[EDIT]
Maybe using a string class like CString (of MFC) or std::string (plain standard C++) can help you.
And if writing a C++ program for Win32, you should never need to use malloc at all. In C++ use new and delete .
[/EDIT]
My opinions may have changed, but not the fact that I am right.
|
|
|
|
|
It gets worse, i get more errors in addition to the previous one
F.K
|
|
|
|
|