|
|
I guess the problem lies on line:
strSQL="SELECT * FROM Ïêϸ where µ¥Î» like '%" ;
I don't think, that my sql server is able to process it
|
|
|
|
|
I have a neat program. I would love to add some type of
documentation to the program. I tried working with
Help Workshop and I tried reading through articles on
creating and adding HTML help. I am totally stumped
and I spent alot of days trying to get just the basics
to work.
Any ideas on how to create and add simple HTML to an
application???
Please, any response any one can give me will be greatly
appreciated.
Sincerely,
Danielle (an overworked graduate student)
|
|
|
|
|
Have a look at www.helpware.net, download far.
I purchased RoboHelp, but all I use now is FrontPage 2002 and Far.
Regards, Keith
|
|
|
|
|
I just got finished creating an HTML help file for an application. When the app is installed, the HTML file gets added in the same directory as the app.
I then added a menu item called 'Help' before About on the main menu. When the user clicks we get use GetCurrentDirectory() to get our directory. Save it as a CString. Then add the html file name to the end of the string. Then use ShellExecute() to open the html file in the default browser.
I actually wanted to add a standard help file, but wasn't allowed. It works though.
void COurProgram::OnCommandsHelp() {
TCHAR szBuffer[MAX_PATH];
GetCurrentDirectory(MAX_PATH, szBuffer);
CString strHelp;
strHelp.Format("%s\\help.html", szBuffer);
SHELLEXECUTEINFO ShExecInfo = { 0 };
ShExecInfo.cbSize = sizeof( SHELLEXECUTEINFO );
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = "open";
ShExecInfo.lpFile = strHelpFile;
ShExecInfo.lpParameters = NULL;
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOWMAXIMIZED;
ShExecInfo.hInstApp = NULL;
HINSTANCE h = ShellExecute(NULL, "open", strHelpFile, NULL, NULL, SW_SHOWMAXIMIZED);
if ((UINT)h > 32) {
} else {
}
}
</code>
|
|
|
|
|
hi
how to simple crypt and encrypt string in Visual C++
|
|
|
|
|
A quick, simple, and unreliable way is to XOR the string with another string.
char szSomeString[] = "This is a string\0";
char szXORString[] = "String\0";
char szEncString[ 100 ];
for( i = 0; i < strlen( szSomeString ); i++ )
{
szEncString[ i ] = szSomeString[ i ];
for( j = 0; j < strlen( szXORString ); j++ )
szEncString[ i ] ^= szXORString[ j ];
}
szEncString[ i ] = '\0';
To decrypt it, you repeat the same steps but backwards. However, I would suggest a stronger encrypting algorithm or some hashing functions. For that check MSDN.
// Afterall I realized that even my comment lines have bugs
|
|
|
|
|
|
Humn... I think I don't have to say that this cipher construction has only 256 possible keys and therefor can be cracked in less than a microsecond
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
Humn... I think I don't have to say that this cipher construction has only 256 possible keys and therefor can be cracked in less than a microsecon
That's why I refered to it as very unreliable . But for someone that has never done any encryption that is a start.
Your brought up a very good point though.
// Afterall I realized that even my comment lines have bugs
|
|
|
|
|
CEdit *pEdit;
if (pEdit=NULL)
........
or
if (!pEdit)
..........
|
|
|
|
|
|
> What different?
Semantics and clarity.
pEdit is a pointer, not a boolean. If you wanted to pass my code review you'd use the first form. And as Mike pointed out, you probably meant == not = .
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
if (pEdit=NULL) is an assignment, always evaluating to false (after setting pEdit to NULL, of course). A nice side effect is that you get a smaller binary in an optimized build since the compiler removes all code within the scope of that if .
if (!pEdit) compares pEdit to 0, and if it doesn't point to a valid object (NULL, the same as zero in C++, is not a valid address for an object) it executes whatever is in the scope of the if .
If you intended to write if (pEdit==NULL) , then the observable difference is exaclty nil. In the first case you compare with NULL (while opening up for the kind of typing errors you did in this post), and in the second case you are effectively communicating to the reader of the code "does not point to anything valid".
I've seen some people swear by the style if (NULL==pEdit) , even that I personally think that's the most illogical way to express that condition, to not put themselves in the situation of assigning where they intended to only compare (possibly butterfingers or a lack of const ;->).
But in the end it's all up to style.
|
|
|
|
|
Mike Nordell wrote:
A nice side effect is that you get a smaller binary in an optimized build since the compiler removes all code within the scope of that if.
LMAO !
Vikram.
-----------------------------
KI klike KDE kand kuse kit, kbut KI kmust kadmit, kstarting kall knames kwith K kis ksilly. KI khope kthey kwill kgive kup kthis kwhole kscheme ksoon kand kcome kup kwith kreal knames.
pI vThink aHungarian nNotation vIs iA aWonderful nThing cAnd pEveryone avShould vUse pIt aAll dThe nTime, adNo nMatter pWhat dThe nContext, adEven adWhen vSpeaking.
|
|
|
|
|
Actually, writing if (NULL==pEdit) is the preferred way in most shops. It would have caught his if (pEdit=NULL) error.
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Ravi Bhavnani wrote:
Actually, writing if (NULL==pEdit) is the preferred way in most shops.
Wallmart or ToysRus? Sorry, but I couldn't resist it. If I ever cought anyone writing such code I'd warn him. If I noticed it again he'd be fired - dark gray on lt. gray paper.
I've been whoring for more companies than I care to count, and in the end the only thing that matters is that you write maintainable code and make your point clearly. I've in all my years met exactly one person that actually used NULL==foo, and he hasn't had much neither published nor much success with that style in cooperative code. God forbid, since it's more illogical than mixing RPN with VB!
If you have any real figures to back your statement "most shops" up, maybe it can get some credibility. If not, it's just an opinion, even more worthless than my opinions in this matter (since I at least have had technical arguments to back my experiences up with).
|
|
|
|
|
Hello,
How can i set rtl setting in Rich Edit 2.0 or Greater.
Thanks
Asad Rasheed
|
|
|
|
|
Hi,
Did any one know how to get a message in Visual C++ when a smart card was inserted or removed ?
Thanks Very much
|
|
|
|
|
2 questions:
Q1:
I'm currently working on an MDI program with controlbars and the Stingray Toolkit. I want to save the program's last size and position in the registry when the program is closed. Currently i'm able to store the controlbars locations into the registry using the SaveBarState function. I basically need to create my own registry key or find some similar function that will store the program's size and position like the SaveBarState function. I'm not really sure how to go about doing this. I can get the information about the program, but i dont know how to store it to the registry properly.
Q2:
The reason I'm doing this is because i want to save the appearance of the program so when it runs again it looks just as it was when it was closed. I also want to be able to size the program according to the screen real-estate on the desktop (the first time it runs or if the resolution changes). The reason for this is i have a few systems im running this program on that use multiple monitors and i dont want the window stretched across them. I also want to have control over the window size and position when it runs. I have some rough code, but i dont know if i should do things this way.
some crappy code im playing with:
(This lets me control the size but im not sure how safe this method is)
//(inside MyApp())
CRect rClientSpace;
CRect rc2;
CWnd * pWndMain;
pWndMain=(CWnd *)pMainFrame;
pWndMain->GetWindowRect(rc2);
SystemParametersInfo(SPI_GETWORKAREA,0,&rClientSpace,0);
//checks horiz. and vert. to make sure it can make this window.
if ( ((rc2.left+1000) < rClientSpace.right)&&((rc2.top+750) < rClientSpace.bottom) )
{
pWndMain->SetWindowPos(NULL, rc2.left, rc2.top, 1000, 750,SWP_NOZORDER);//I want 1000x750 when feasible
}
pWndMain->GetWindowRect(rc2);//to see the results in debugger
Any ideas or code would be great.
Thanks !
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
This is how I do it:
void CMainFrame::OnDestroy()
{
WINDOWPLACEMENT wndPlace;
if ( GetWindowPlacement( &wndPlace ) )
{
AfxGetApp()->WriteProfileInt( "WndPos", "Left", wndPlace.rcNormalPosition.left );
AfxGetApp()->WriteProfileInt( "WndPos", "Top", wndPlace.rcNormalPosition.top );
AfxGetApp()->WriteProfileInt( "WndPos", "Right", wndPlace.rcNormalPosition.right );
AfxGetApp()->WriteProfileInt( "WndPos", "Bottom", wndPlace.rcNormalPosition.bottom );
AfxGetApp()->WriteProfileInt( "WndPos", "Max", wndPlace.showCmd == SW_SHOWMAXIMIZED );
}
CFrameWnd::OnDestroy();
}
void CMainFrame::ActivateFrame(int nCmdShow)
{
CRect r;
r.top = AfxGetApp()->GetProfileInt( "WndPos", "Top", 0 );
r.left = AfxGetApp()->GetProfileInt( "WndPos", "Left", 0 );
r.bottom = AfxGetApp()->GetProfileInt( "WndPos", "Bottom", 400 );
r.right = AfxGetApp()->GetProfileInt( "WndPos", "Right", 600 );
MoveWindow( r );
if ( AfxGetApp()->GetProfileInt( "WndPos", "Max", -1 ) == -1 )
{
CenterWindow();
nCmdShow = SW_MAXIMIZE;
}
if ( AfxGetApp()->GetProfileInt( "WndPos", "Max", 0 ) == 1 )
nCmdShow = SW_MAXIMIZE;
CFrameWnd::ActivateFrame(nCmdShow);
}
There are 10 kinds of people - those that get binary and those that don't.
|
|
|
|
|
Thanks, that worked well.
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
Jeff, What version of StingRay are you using. OT-Pro includes SECWorkspaceManagerEx() which saves the size/pos/state of all windows/toolbars etc. I use this in ED (see sig).
Also nore that SPI_GETWORKAREA is only for the primary monitor. If you want to force users only to use that, you are ok, but most users won't like that.
Instead use code like:
#include <multimon.h>
if ( WinPlatform() & ( WIN_98 | WIN_NT5 )
&& GetSystemMetrics( SM_CMONITORS ) > 1
)
{
pRect->top = GetSystemMetrics( SM_YVIRTUALSCREEN );
pRect->left = GetSystemMetrics( SM_XVIRTUALSCREEN );
pRect->right = GetSystemMetrics( SM_CXVIRTUALSCREEN ) + pRect->left;
pRect->bottom = GetSystemMetrics( SM_CYVIRTUALSCREEN ) + pRect->top;
}
There are articles here on Multimon which provides a good API for dealing with multiple monitors.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
I'll have to try that out. The SPI_GETWORKAREA seems to work but probably because i have nView on my Geforce laptop video card. It acts like one wide monitor.
Jeff Rothenberg
Project Engineer
Vector CANtech, Inc.
|
|
|
|
|
electronicman_x wrote:
I'll have to try that out.
Yes you must.
electronicman_x wrote:
The SPI_GETWORKAREA seems to work but probably because i have nView on my Geforce laptop video card. It acts like one wide monitor.
This must be fooling SPI_GETWORKAREA. You need to disable this sort of stuff when developing and testing multi-monitor code.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|