|
hi,
i want to create a sample app with one button and change its text according to UI language.hw can i do that?
|
|
|
|
|
Use a resourse dll of string table for each language you want to use in your application.The Id for a particular string in all dlls should be the same. Load the appropriate DLL (according to the local language) at run time, and read strings using LoadString http://msdn.microsoft.com/en-us/library/ms647486(VS.85).aspx[^]
Another way is to store strings of each language in separate XML files in such a way that the node name of a particular string is same in all XML files. Load the appropriate XML file and parse nodes using MSXML to read strings.
|
|
|
|
|
Use either a STRINGTABLE or MESSAGETABLE resource, as described here[^]. You can include these in your app if they are of reasonable size, or put into a separate dll as described in the previous answer. txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
hi.
i have one itnerop dll which i am using in a MFC application. i use the function of dll in a thread created in main application. At some event i want to TerminateThread()
when i do that my dll function got hanged. when control comes to that function it looses its control. can anyone tell me what exactly happens in this senario and is TerminateThread() can be used in this manner
Plz help
Thanks
|
|
|
|
|
TerminateThread is evil and should never be used (you may use it just as extreme measure).
You should use an alternative way to terminate your thread.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
what are the other ways possible in MFC plz tell me.... i have used AfxBeginThread() to create the thread
|
|
|
|
|
You should read this assay [^].
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
As its not a UI thread, better to use an CEvent in MFC to check when to exit the thread..
|
|
|
|
|
Cool_Dev wrote: As its not a UI thread, better to use an CEvent
But first make sure you've read the "Avoid CMutex, CEvent, CSemaphore and CCrticalSection" assay.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Thanks to all of you for ur links and advices i will read all the eassays and then decide which will be approriate method to do my requirement.
Thakx
|
|
|
|
|
You are welcome.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
go for windows APIs for Events instead of using MFC.. no other better ways to request a worker thread to terminate itself..
|
|
|
|
|
Hi all,
I am trying to write MJPEG frames into AVI container.
When i try to play the .avi file in VLC player,It displays the following error message:
No suitable decoder module:
VLC does not support the audio or video format "����". Unfortunately there is no way for you to fix this.
How to solve this?
Pls help me.
|
|
|
|
|
check whether the decoder needed to decode the frames you wrote is installed on your system. use microsoft GraphEdit or similar kind of tools to check it..
|
|
|
|
|
hi
I have implemented as following:
UINT_PTR test = (UINT_PTR)processedJpegData; //This is the data to be written into AVI
LPVOID p = reinterpret_cast<LPVOID>(test);
if(!g_bCreated)
{
AVISTREAMINFO streamInfo;
memset(&streamInfo, 0, sizeof(streamInfo));
streamInfo.fccType = streamtypeVIDEO;
streamInfo.fccHandler = mmioFOURCC('M', 'J', 'P', 'G');
//streamInfo.fccHandler = mmioFOURCC('X', 'V', 'I', 'D');
streamInfo.dwScale = 1001;
streamInfo.dwRate = 30000;
streamInfo.dwSampleSize = 0;
streamInfo.dwSuggestedBufferSize = 0 ;
SetRect(&streamInfo.rcFrame, 0, 0,0,0);/* 720, 480,frameInfo.m_width, frameInfo.m_height*/
HRESULT hrCreate = AVIFileCreateStream(m_pAVIFile, &m_pVideoStream, &streamInfo);
if (hrCreate!=AVIERR_OK)
return ;
BITMAPINFOHEADER *bi = new BITMAPINFOHEADER();
bi->biSize = sizeof(BITMAPINFOHEADER);
bi->biWidth = 720;
bi->biHeight = 480;
bi->biPlanes = 1;
bi->biBitCount = 16;
bi->biCompression = mmioFOURCC('M', 'J', 'P', 'G'); // 0 = BI_RGB
bi->biSizeImage = size;
bi->biXPelsPerMeter= 0;
bi->biYPelsPerMeter= 0;
bi->biClrUsed = 0;
bi->biClrImportant = 0;
HRESULT hrSetformat = AVIStreamSetFormat(m_pVideoStream, 0,&bi, 40);
if(hrSetformat != 0)
return;
g_nIndex = AVIStreamLength(m_pVideoStream);
g_bCreated=true;
}
HRESULT hrStreamWrite = AVIStreamWrite(m_pVideoStream, g_nIndex++, 1, p,size, AVIIF_KEYFRAME, 0, 0);
if (hrStreamWrite!=AVIERR_OK)
return ;
This executes successfully and creates the AVI file also.But the problem is in playing that AVI file.
|
|
|
|
|
Are you sure you are writing a correct AVI file? Looks like VLC does not find the fourcc code for your codec (it should be something like MJPG). I am sure that you have a MJPEG codec in your system, but VLC cannot identify your AVI file as coded in MJPG. --
Si dos montan un caballo, uno debe ir detrás.
|
|
|
|
|
May be.I am using the fourcc code as mmioFOURCC('M', 'J', 'P', 'G').
How can we find whether we wrote a correct AVI file or not?
.AVI file size is 10 mb .
Also,AVIWriteStream function works fine.
So,I assumed that MJPEG frames were written into AVI container.
How to solve this?
|
|
|
|
|
hi
could u explain this?
I have implemented as following:
UINT_PTR test = (UINT_PTR)processedJpegData; //This is the data to be written into AVI
LPVOID p = reinterpret_cast<LPVOID>(test);
if(!g_bCreated)
{
AVISTREAMINFO streamInfo;
memset(&streamInfo, 0, sizeof(streamInfo));
streamInfo.fccType = streamtypeVIDEO;
streamInfo.fccHandler = mmioFOURCC('M', 'J', 'P', 'G');
//streamInfo.fccHandler = mmioFOURCC('X', 'V', 'I', 'D');
streamInfo.dwScale = 1001;
streamInfo.dwRate = 30000;
streamInfo.dwSampleSize = 0;
streamInfo.dwSuggestedBufferSize = 0 ;
SetRect(&streamInfo.rcFrame, 0, 0,0,0);/* 720, 480,frameInfo.m_width, frameInfo.m_height*/
HRESULT hrCreate = AVIFileCreateStream(m_pAVIFile, &m_pVideoStream, &streamInfo);
if (hrCreate!=AVIERR_OK)
return ;
BITMAPINFOHEADER *bi = new BITMAPINFOHEADER();
bi->biSize = sizeof(BITMAPINFOHEADER);
bi->biWidth = 720;
bi->biHeight = 480;
bi->biPlanes = 1;
bi->biBitCount = 16;
bi->biCompression = mmioFOURCC('M', 'J', 'P', 'G'); // 0 = BI_RGB
bi->biSizeImage = size;
bi->biXPelsPerMeter= 0;
bi->biYPelsPerMeter= 0;
bi->biClrUsed = 0;
bi->biClrImportant = 0;
HRESULT hrSetformat = AVIStreamSetFormat(m_pVideoStream, 0,&bi, 40);
if(hrSetformat != 0)
return;
g_nIndex = AVIStreamLength(m_pVideoStream);
g_bCreated=true;
}
HRESULT hrStreamWrite = AVIStreamWrite(m_pVideoStream, g_nIndex++, 1, p,size, AVIIF_KEYFRAME, 0, 0);
if (hrStreamWrite!=AVIERR_OK)
return ;
This executes successfully and creates the AVI file also.But the problem is in playing that AVI file.
|
|
|
|
|
I want to use the CHtmlEditView in my vc 6.0 project.
so i added the header file 'afxhtml.h' and then added the following line.
CHtmlEditView htmleditview_object;
then i compiled the project and its giving the error like
error C2501: 'CHtmlEditView' : missing storage-class or type specifiers.
what should i do?
How do i solve this problem?sunnyram
|
|
|
|
|
sunnyram wrote: CHtmlEditView
Is this a MFC project ?
|
|
|
|
|
yes this is the MFC project. sunnyram
|
|
|
|
|
Hi
I need to get enlightten with a concept in C++/vc++ designing....
This is an general question...may be more pertaining to design mechanism of any project
I am trying to find out a good way to or standard method or any standard way to handle all the errro scenerio in a project?
To be more specific, I am doing a project on a protocol analyser....Taking an aaccount of any kind of protocol, what are the good way of handling errors for the same...so that its more scalable,(means we can add more error cases or test cases later easily)
May be an header file where all errrors will be saved as define primitive and handle all of them in a function....Or any good kind of mechanism...
Please enlighten me with the same
thanks in advance
|
|
|
|
|
Use Exceptions[^] for all error situations. txtspeak is the realm of 9 year old children, not developers. Christian Graus
|
|
|
|
|
From experience I've settled on three classes:
1.CMessage: containing the description of an error, though a message doesn't have to describe just an error - "Application started" and "Application stopped", for example, can be included alongside "Widgit X fell over". Initially I used a .h file for this but migrated to using a .mc file as well, the .mc being compiled to produce a .rc resource file.
2.CEventLog: containing some means of logging a message. I started logging to a .txt file, moved to .html and now log to the Windows Event Log via the ReportEvent [^] function.
3.CExError which can be thrown and has a constructor which takes the error information and logs it.
The most productive tactic by far I found was to ensure the file and line numbers where the error occurred were included in the message by using macros such as:
#define AT __FILE__ ":" TOSTRING(__LINE__)
Importantly I found this was a maintainable and expandable (relatively easy to add or edit messages) strategy which:
1. Didn't obscure the actual point of the code (too much) with line after line of error handling.
2. Completely hid away logging of errors in the CExError constructor,
3. Moved away (to the catch block) the point at which any code written to recover needed to go.
So the actual code ended looking something like:
...
void someclass::somefunction(...)
{
try
{
if(!AttemptSomething(param1, param2)
{
throw CExError(MESSAGE_ID_1, "Context info", AT);
}
if(!AttemptSomethingelse(param1, param2)
{
throw CExError(MESSAGE_ID_2, "Context info", AT);
}
}
catch(CExError& err)
{
if(MESSAGE_ID_2 == err.MessageID)
{
MessageBox(err.Message);
}
}
return;
}
...
|
|
|
|
|
Hello,
I have an exe which launches a DLL inside a thread (using CreateInstance) that does some SQL process (retreive, update of data, etc.). Then this exe is launched by some trigger event which is asynchronous.
Now testing this on my environment (Windows XP Service Pack 3, Core 2 DUO @2.33GHz, 2GB of RAM) by triggering the event 2x simultaneously absolutely works. I can see in the log files I've created that the 2 DLL instance are processing in parallel.
The problem is with another server environment that we have (Windows Server 2003 R2 Service Pack 2, Xeon CPU @2.5GHz, 3GB of RAM). When I check the log files, up to the actual launch of the DLL was done simultaneously. But when it came to the DLLs, they seem to be working sequentially. After the 1st DLL is done (which is after 10 mins), then that is the time that the 2nd DLL starts in processing...
Anyone has any idea/clue on this problem? I'm on a dead-end right now. Thanks!
|
|
|
|
|