|
Bob Stanneveld wrote:
I have a listbox in my dialog. I added a handler for the CBN_SELCHANGE notification
Did you mean LBN_SELCHANGE ?
/ravi
My new year's resolution: 2048 x 1536
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Hello,
I have a listbox control and I was catching the CBN_SELCHANGE notification (which actually worked ). No I catch the LBN_SELCHANGE, which also workes. This lets me believe that they are the same..
Now I'm using that notification.
I also got the blogging virus..[^]
|
|
|
|
|
I have used Visual Studio 6 for a long time and I like the multiple, non maximized windows. For one thing I can put one window next to another and compare them. Also I can use a dual monitor system and have different windows on different monitors.
Visual Studio 7.0 has nice Property pages etc, which fold away into the edge of the screen, but I can see only one window of source code which is maximized to fill all the rest of the space.
What I would REALLY like is the best of both worlds, with Property pages which fold away AND multiple source windows which don't fill the whole area.
If I can't get my wish list, I'd settle for the vs6.0 look, where I can at least see multiple windows.
Any suggestions?
Thanks,
Ilan
|
|
|
|
|
|
This one is really driving me nuts! I am creating a dialog using the following code:
<br />
if (!::IsWindow(pPS->pDlg->m_hWnd)){<br />
pPS->pDlg->Create(IDD_CFG_DLG, this); <br />
}<br />
HWND hwndParent = ::GetParent(pPS->pDlg->m_hWnd); <br />
The creation happens after the OnInitDialog() of the main application window (a dialog) and everything seems to return success except for the GetParent() call which I am expecting to return my main dialog's m_hWnd. The IDD_CFG_DLG does have the "CHILD" style set and no border if that matters (I don't think it does).
I have also tried forcing the parent by calling SetParent() but even though it returns no error, the result is the same - the parent of the created dialog is still NULL!
What am I doing wrong here?
Thanks,
Dave
|
|
|
|
|
Hi all !
I would like to protect a standard C struct with a CRC in order to check if the structure contains valid information.
A wrote a small demo program with a standard C structure as member. If I read any element of the structure the checksum should be checked for correctness. If I write any element of the structure the checksum has to be recalculated. I would like to do that by overloading the -> operator.
In the demo program the call of the -> operator function works fine. However I have the problem to check if there is a Read- or Writeaccess. How can I check if an expression like
x->deviceData.HW_Version is used within a write or a read context ?
sincerly
Manfred
#include "stdafx.h"
#include <stdio.h>
// --- standard C structure ------------------------------
typedef
struct
{
int SW_Version ;
int HW_Version ;
unsigned long SerialNumber ;
} DeviceData ;
// --- class with CRC functionality ------------------------
class CCrc
{
public:
unsigned short crc ;
} ;
class CrcClass : public CCrc
{
public:
DeviceData deviceData ;
void CheckCrc() ;
CrcClass * operator->() ;
};
CrcClass * CrcClass::operator->()
{
CheckCrc() ;
return this;
};
void CrcClass::CheckCrc()
{
if( 1 ) // throw Exception for test
{
throw "Invalid Checksum !!!!\r\n" ;
}
};
int main(int argc, char * argv[])
{
CrcClass x ;
try
{
x->deviceData.HW_Version = 111 ;
x->deviceData.SW_Version = 222 ;
x->deviceData.SerialNumber = 333 ;
printf("%d", x->deviceData.HW_Version );
printf("%d", x->deviceData.SW_Version );
printf("%d", x->deviceData.SerialNumber );
}
catch( char * exMessage )
{
printf("%s", exMessage ) ;
}
return 0;
}
|
|
|
|
|
You should really use Get/Set methods and put your member variables as private.
In each Getter and Setter you can check the CRC.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Honnestly I found that overriding the -> in this case is not really appropriate. It breaks the 'natural law' for objects and pointers. Here, you have an object (that is not a pointer !) and you will access it's member variable as if it was a pointer ! So that's really strange...
This operator is sometimes overriden in some very specific cases like for example when it must be 'seen' as a pointer (a class that wraps a pointer for example). The best example is the 'smart pointers'. It's a class that wraps a pointer and handle all the memory management for this pointer (ok, I won't describe the functionality of the smart pointers...). So there is here a purpose for overloading this operator: give the class the same 'feel' as it was a real pointer !
In your case, it has nothing to do with pointers at all so your code look like you access your member variable as if the object was a pointer...
Otherwise, I don't see why you want to use so complicated things: why don't you just write a function that will check this ?? And there is no way to know if the operator is read for reading or writing as far as I know (I might be wrong...).
|
|
|
|
|
i want to make program for start service or stop services from source code
|
|
|
|
|
|
i want to make on function in vc++ so its always give
me random number between 0 and 100 .plz give me complete solution
|
|
|
|
|
Good luck. The best you can do is to use rand() to get a pseudo-random number. Something like:
int x = rand() % 101;
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Here is an example for you :
#include <stdlib.h>
#include <time.h>
int main( void )
{
int i;
// Seed the random-number generator with current time so that numbers will be different every time we run.
srand( (unsigned)time( NULL ) );
// Now generate random number 0-100
i = rand()%101;
// Write out
printf("%d",i);
}
m0n0
|
|
|
|
|
if you don't care the numerical distribution within the function, use the rand()%101 as others have recommended. Pay attention to inclusive verses exclusive. rand()%101 will give you results 0..100 inclusive. rand()%99+1 will give you 1-99 range (or 0..100 exclusive).
There are no "perfect" random number generators, there is only the best for your needs. For 99.9% of random number needs, a rand()%n distribution for 0..(n-1) range is sufficient. If you have need of better attempts at uniform and non-uniform distribution random generators, you can google on the subject, or visit the boost library set.
http://www.boost.org/libs/random/index.html[^]
_________________________
Asu no koto o ieba, tenjo de nezumi ga warau.
Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)
|
|
|
|
|
Hi all,
I'm implementing a COM Server (using attributed ATL 7) running as a windows service. During the build process VC (Visual C++ .NET 2003) generates the necessary IDL code and when done it registers the service.
The service registration (which I assume is carried out by running "myserver /RegServer") fails however, and a messagebox appears stating that "The program can not be started because the some_dll.dll could not be found...".
My app uses two custom dll's and I am sure that they are in my "path" variable since it is no problem to start the application in debug mode from within VC.
If I put the dll's in my working directory though, the server registration succeeds.
Does anyone know why the registration fails if the dll's are not put in my working directory? Why does it seem as the service registration process is not searching my "path" for dlls?
/Rillbert
|
|
|
|
|
This would be my first guess: There are two paths. One for the user and one for the system. A NT service typically runs under LOCALSYSTEM account, in which case it might not have access to the 'user' path variable but it does to the 'system' path variable. Check your 'path' variable and make sure the place you want to put the DLL is in the 'path' assigned to the system.
|
|
|
|
|
hi
please tell me how can i convert hex value to normal charactor string programatically
e.g.
44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,00,6e,00, 74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00, 74,00,69,00,6e,00,67,00,73,00,5c,00,41,00,6d,00,6f,00,6c,00, 2e,00,41,00,4d,00,4f,00,4c,00,5c,00,4c,00,6f,00,63,00,61,00, 6c,00,20,00,53,00,65,00,74,00,74,00,69,00,6e,00,67,00,73,00, 5c,00,41,00,70,00,70,00,6c,00,69,00,63,00,61,00,74,00,69,00, 6f,00,6e,00,20,00,44,00,61,00,74,00,61,00,5c,00,4d,00,69,00, 63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,4f,00,75,00, 74,00,6c,00,6f,00,6f,00,6b,00,5c,00,4f,00,75,00,74,00,6c,00, 6f,00,6f,00,6b,00,2e,00,70,00,73,00,74,00,00,00
want to convert in normal string pls send me pcs of code in c++
Thanking you
Manoj Jangid
|
|
|
|
|
|
Jangid wrote:
please tell me how can i convert hex value to normal charactor string programatically
e.g.
44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,00,6e,00, ...
What do you mean by "normal charactor string"?
|
|
|
|
|
That looks like a UNICODE string. Notice the 3 sets of NUL bytes at the end... I suspect if he loaded the entire data set into a buffer and called WideCharToMultiByte, he would end up with a 'normal 'string.
|
|
|
|
|
Try this approach,It will definitely work.I have tried in my code
char _hex_buf[4] = "12A";
int _hexdata;
sscanf(_hex_buf,"%x",&_hexdata);
Regards
Pankaj
|
|
|
|
|
I have solved the 1010 compiler error unexpected EOF by deleting dependencies with *.pch files.Now I have linker error LNK2001 unresolved external symbol _winmain@16.Please help.This is my code:
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmd,int nCmdShow )
{
int brojevi[9];
brojevi[0]=3;
int s;
s=1;
brojevi[s] = brojevi[0];
while(s<9)
{
brojevi[s]=brojevi[s]*3+8;
s++;
}
s=0;
while(s<9)
printf("\nbrojevi[%d] = %d",s,brojevi[s]);
return 0
};)
|
|
|
|
|
This looks like it might be a Unicode problem. Change your entry point (Project --> Settings --> Link --> Output) to wWinMainCRTStartup and see if that solves the problem. See MSDN article Q125750 for more.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
|
|
|
|
|
Hi I have an assignment to hand in shortly for which I am after some guidance. The task is to read a WAV file, request a fade in /out time for the track from the user and the do the fade by modifying the binary file then writing it as a new file I have attached my code so far but do not know how to do the fade and how to write it as a new file. Please help!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main ()
{
FILE *oldwav,*newwav;
char *stgfilename;
char riff[5];
char wave[5];
char fmt[5];
char data[5];
unsigned long int length, binary, stereo, mono, bits, sample, bps, bpsam, bitsps, sound, ldata;
int s, m, time, count;
float fadein, track, track1, fadeout;
/* */
stgfilename=(char*)malloc(81);
printf("Please enter the file path of your wav file\n\r");
gets(stgfilename);
oldwav=fopen(stgfilename,"rb+");
if(oldwav==NULL)
{
printf("Cannot find the file specified\n\r");
exit(1);
}
/* To start the RIFF Chunk must be determined*/
fread(riff,1,4,oldwav);
riff[4]='\0';
printf("header contains %s this is a wav file!!\n\r", riff);
if (strcmp(riff,"RIFF")!=0)
{
printf("error in header not wav file\n\r");
fclose(oldwav);
exit(1);
}
fread(&length,4,1,oldwav);
printf("The length of the wav file is %lx hex\n\r", length);
printf("The length of the wav file is %ld decimal\n\r", length);
fread(wave,1,4,oldwav);
wave[5]='\0';
printf("the format header contains %s\n\r", wave);
if (strcmp(wave,"WAVE")!=0)
{
printf("error not in WAV format\n\r");
fclose(oldwav);
exit(1);
}
/* Secondly the FORMAT Chunk must be determined*/
fread(fmt,1,4,oldwav);
fmt[3]='\0';
fmt[4]='\0';
printf("the format header contains %s\n\r", fmt);
if (strcmp(fmt,"fmt")!=0)
{
printf("error\n\r");
fclose(oldwav);
exit(1);
}
fread(&binary,4,1,oldwav);
if (binary!=0X10)
{
printf("error\n\r");
fclose(oldwav);
exit(1);
}
printf("header file contains %lx\n\r",binary);
fread(&bits,2,1,oldwav);
if (bits!=0X01)
{
printf("error corrupted file this should be 01 always!\n\r");
fclose(oldwav);
exit(1);
}
printf("Check bytes 8-9 are 01 ---> Correct 01\n\r");
fread (&stereo,2,1,oldwav);
if (stereo!=0X02)
{
printf("the file is not stereo\n\r");
}
if (stereo==0x02)
{
printf("the file is stereo\n\r");
s=2;
}
if (stereo!=0X01)
{
printf("the file is not mono\n\r");
}
if (stereo==0x01)
{
printf("the file is mono\n\r");
m=1;
}
fread(&sample,4,1,oldwav);
printf("The sample rate of the wav file is %lx hex\n\r", sample);
printf("The sample rate of the wav file is %ld decimal\n\r", sample);
fread(&bps,4,1,oldwav);
printf("The bytes per second of the wav file is %lx hex\n\r", bps);
printf("The bytes per second of the wav file is %ld decimal\n\r", bps);
fread(&bpsam,2,1,oldwav);
printf("The bytes per sample of the wav file is %lx hex\n\r", bpsam);
printf("The bytes per sample of the wav file is %ld decimal\n\r", bpsam);
if (bpsam==0x01)
{
printf("this is 8 bit mono!!\n\r");
s=1;
}
if (bpsam==0X02)
{
printf("this is 8 bit stereo or 16 bit mono!!\n\r");
s=2;
}
if (bpsam==0X04)
{
printf("this is 16 bit stereo!!\n\r");
s=4;
}
printf("the value of s is ---> %d this a multiplier for?\n\r",s);
fread(&bitsps,2,1,oldwav);
printf("the bits per sample of this wav file is %lx hex\n\r", bitsps);
printf("the bits per sample of this wav file is %ld decimal\n\r", bitsps);
/* Thirdly the DATA Chunk must be determined*/
fread(data,1,4,oldwav);
data[4]='\0';
if (strcmp(data,"data")!=0)
{
printf("error\n\r");
fclose(oldwav);
exit(1);
}
printf("third line contains %s !!\n\r", data);
fread(&sound,4,1,oldwav);
printf("length of data to follow %lx hex\n\r", sound);
printf("length of data to follow %ld decimal\n\r", sound);
/* Convert the length of the file into seconds */
time=sound/(s*sample);
printf("time of track = %d seconds\n\r",time);
/* Providing the fadein time the user requires*/
printf("INPUT TIME FOR FADEIN FROM START...\n\r");
scanf("%f",&fadein);
printf("The fade in time is %f seconds\n\n\r",fadein);
track=(fadein*bps);
printf("the fadein in bytes = %f\n\r",track);
/* Check the fadein time to make sure it is not less than or equal to zero*/
if (fadein<=0)
{
printf("error time can't be less than or equal to zero\n\r");
printf(" INPUT TIME FOR FADEIN FROM START...\n\r");
scanf("%f",&fadein);
printf("The fade in time is %f seconds\n\n\r",fadein);
track=fadein*bps;
printf("the fadein in bytes = %f\n\r",track);
}
if (fadein>=time)
{
printf("error time can't be more than or equal time of track\n\r");
printf(" INPUT TIME FOR FADEIN FROM START...\n\r");
scanf("%f",&fadein);
printf("The fade in time is %f seconds\n\n\r",fadein);
track=fadein*bps;
printf("the fadein in bytes = %f\n\r",track);
}
/* Providing the fadeout time the user requires*/
printf("INPUT TIME FOR FADEOUT TO START...\n\r");
scanf("%f",&fadeout);
printf("The fade out time is %f seconds\n\n\r",fadeout);
track1=fadeout*bps;
printf("the fadeout in bytes = %f\n\r",track1);
/* Check the fadeout time to make sure it is not less than or equal to zero*/
if (fadeout>=time)
{
printf("error time can't be more than or equal to the length of the track\n\r");
printf(" INPUT TIME FOR FADEOUT TO START...\n\r");
scanf("%f",&fadeout);
printf("The fade out time is %f seconds\n\n\r",fadeout);
track1=fadeout*bps;
printf("the fadeout in bytes = %f\n\r",track1);
}
if (fadeout<=fadein)
{
printf("THIS IS IMPOSSIBLE PLEASE CHECK YOUR FADE OUT TIME\n\r");
printf(" INPUT TIME FOR FADEOUT TO START...\n\r");
scanf("%f",&fadeout);
printf("The fade out time is %f seconds\n\n\r",fadeout);
track1=fadeout*bps;
printf("the fadeout in bytes = %f\n\r",track1);
}
/* Fade in Calculation*/
}
|
|
|
|
|
Hi All,
Can anybody suggest me "Verfication tool for c++ code" which can do following things:
1) Check whether the code is following the coding guidelines.
2) Check if there is any memory leakage
3) suggest how to improve the code in terms of performance??
I am really find it tough to search such a kind of tool. If you know something also, please suggest me.
regards,
Arpitha
|
|
|
|
|