|
Well, I don't think Microsoft and Intervideo deliver debug versions of their programs tp the customers There must be another way.
Furthermore the assertion dialog (or MessageBox) doesn't look the same like in the MediaPlayer or WinDVD.
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Gregor S. wrote:
Well, I don't think Microsoft and Intervideo deliver debug versions of their programs tp the customers
Well, an ASSERT is suposed to only be present on debug Builds, right?
You can achieve the same by #define _DEBUG on your release build, or creating a proprietary fancy ASSERT macro.
My latest articles:
XOR tricks for RAID data protection
Win32 process suspend/resume tool
|
|
|
|
|
While in Debug mode you could use _CrtDbgReport, however that function only exists in the debug version of the C-Runtime libraries. Look at how ATLs ATLASSERT macro works.
#define _ASSERTE(expr) \
do { if (!(expr) && \
(1 == _CrtDbgReport(_CRT_ASSERT, __FILE__, __LINE__, NULL, #expr))) \
_CrtDbgBreak(); } while (0)
For release mode you could simply create your own function that reports the data in a message box, and you would use these preprocessor defines to get the line number and file: __FILE__, __LINE__
Good Luck
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
I finally managed to create my own macro, could you please take a look whether it is correct? Is seems to work however
void _assert_(void *exp)
{
char err[1024];
sprintf(err, "Assertion Failed!\n\n\"%s\" in line %i.\nASSERT(%s)", \
__FILE__, \
__LINE__, \
exp); \
if(exp)
{
MessageBox(NULL, err,"Fatal Error", MB_OK|MB_ICONSTOP);
PostQuitMessage(0);
}
}
#define _ASSERT_(exp) { _assert_(#exp); }
For testing purposes:
void *pFoo = NULL;
_ASSERT_(pFoo != NULL);
thanks
btw why don't the pre-tags recognise tabs (\t) when I copy and paste my code?
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Your macro looks good to me
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
...that's bugging me...
I wrote a message about a CreateProcessAsUser problem a few hours ago titled "Is it a bird? ... No It's Superuser!".
I've managed to narrow the problem, so it should be more easy to anwser...
Given that I know the name of my administrator account and it's password, how can I get SeAssignPrimaryTokenPrivilege, operating from a regular account, in order to succesfully place a call to CreateProcessAsUser?
The idea is to copy the functionality of Linux' su...
Regards,
Georg Haan(.NL)
|
|
|
|
|
|
I use the following two line of codes to write vertical text, it works, but the text is facing the left, reads from the top to the bottom. What shall I do if I like to have the vertical text to face the right, and read from bottom up?
stringFormat.SetFormatFlags(StringFormatFlagsDirectionVertical);
graphics->DrawString(string, -1, &myFont, origin, &stringFormat, &blackBrush);
Thanks.
|
|
|
|
|
if there isnt a flag to set what u want (and i havent done so much text output stuff for a while) u could draw to a memdc and invert / flip it before displaying it
"... and so i said to him ... if it don't dance (or code) and you can't eat it either f**k it or throw it away" biz stuff about me
|
|
|
|
|
|
OK, I've never used GDI+, but in standard GDI, the font is created with the rotation factor. Check that to see whether the value of 900 for Orientation needs to be changed to 2700 where it is constructued, or visa versa.
Roger Allen
Sonork 100.10016
I think I need a new quote, I am on the prowl, so look out for a soft cute furry looking animal, which is really a Hippo in disguise. Its probably me.
|
|
|
|
|
Thanks for the reply. The computer is too heavy for me to turn it upside down.
I tried the following, but for some reason, I only see the ellipse, but no text 'HAPPY DAY!', am I missing something here?
Pen pen(Color(255, 0, 0, 255));
PointF origin(x, y);
WCHAR string[256];
x = 200;
y = 200;
graphics->RotateTransform(90.0f);
graphics->TranslateTransform(x, y, MatrixOrderAppend);
wcscpy(string, L"HAPPY DAY!");
graphics->DrawString(string, -1, &myFont, origin,
&stringFormat, &blackBrush);
graphics->DrawEllipse(&pen, 0, 0, 200, 80);
Thanks!
|
|
|
|
|
|
I am drawing both the text and ellipse on an image that I uploaded using graphics.DrawImage().
I agree that this method shall work because I can see the ellipse, but not the text... weird...
Anyways, thank you again for pointing me to the right direction.
|
|
|
|
|
Perhaps You are drawing the ellipse over the text ?
try it in this order
graphics->DrawEllipse(&pen, 0, 0, 200, 80);
graphics->DrawString(string, -1, &myFont, origin, &stringFormat, &blackBrush);
|
|
|
|
|
Thanks. It doesn't work either.
Anybody ever tried to rotate a line of text before using GDI+?
|
|
|
|
|
|
Hey, you are the best! Thank you so much, Daniel. My code is finally working!!!!!!
I shall call TranslateTransform() first before calling RotateTransform().
Still, don't know why this doesn't make a difference when drawing the ellipse though... but hey, who cares now... hee hee...
|
|
|
|
|
It is my first time here asking for help, and I had a very happy experience. All you guys are great! Thank you all.
Best wishes to you all.
|
|
|
|
|
I don't know which forum to post this, but since I'm a C++ developer and this forum is the most frequented, I post it here.
I have put the following lines to make mc generate a message table for 3 locales:
;
LanguageNames=(English=0x409:MSG0409)
;
LanguageNames=(EnglishCA=0x1009:MSG1009)
;
LanguageNames=(FrenchCA=0xC0C:MSG0C0C)
My problem is that the MS Message compiler (mc) don't output accented characters correctly. Here is an example entry:
MessageId=100
Severity=Success
Facility=Itf
SymbolicName=MSG_APPSTART
Language=English
Service has started successfully.
.
Language=EnglishCA
Service has started successfully.
.
Language=FrenchCA
Le service a démarré avec succès.
.
When I want to get the message using FormatMessage , I get the following when specifying 0x0c0c as the language:
Le service a dTmarrT avec succFs.
As one can see, the accented characters are messed up. Here is a snippet of the MSG0C0C.bin file outputted by mc:
L L e s e r v i c e a d ˜m a r r ˜ a v e c s u c c ¦s
letters above have a space between them, except for the one where should have been the accented characters.
I can't find anything in MSDN about message compiler an internationalization that explains how to make mc recognize foreign chars correctly, or how to put them in the .mc file.
Tx for your help.
Michel
It is a lovely language, but it takes a very long time to say anything in it, because we do not say anything in it, unless it is worth taking a very long time to say, and to listen to.
- TreeBeard
|
|
|
|
|
I got some modeless dialogs.
I set the tab order for them.
But:
Tab does not work. Everytime I hit at the Tab-Key a sound is heared and nothing else happens.
If I call the same dialog modal the tab works as usual.
Can anyone give me a hint who to aktivate the tab functionality?
|
|
|
|
|
In your message loop you need to make a call to IsDialogMessage if the HWND is your Dialog. If your window is not a dialog, then call Translate and DispatchMessage like normal.
If your dialog message is processed by IsDialogMessage, then you do not need to Dispatch it because this function does that.
Coincidentally if you have a function that is not a dialog, but does have a set of controls that you would like to tab through, you can dispatch your messages to that window with IsDialogMessage as well.
Good Luck
Build a man a fire, and he will be warm for a day Light a man on fire, and he will be warm for the rest of his life!
|
|
|
|
|
Hi,
I have a multi-threaded application and have the following problem, which I am not sure how to solve.
I have 2 threads running. The 1 thread I would like to SUSPEND or place in SLEEP mode. This is so that I can give the processor a chance to do other things. This thread I only need to work every half an hour.
If I place the thread in Sleep, I cannot get it out of that mode until the Sleep ends.
Also if I should need to kill the thread and it is in sleep, I am going to have to wait a half an hour ( at the most) before the thread dies.
How do I manage this?
Thanks in advance for any ideas.
Regards
Rui
|
|
|
|
|
Ruca wrote:
If I place the thread in Sleep, I cannot get it out of that mode until the Sleep ends.
You shouldn't be using Sleep for this. You have three choices:
1. The most complicated, but more elegant and powerful: Use WaitForSingleObject and use an event object with the timeout value being the Sleep period
2. I do not recommend, but easier: Use SuspendThread from the thread 2 for suspending thread 1. Then set some bool and ResumeThread for resuming the execution.
3. The most horrible: If the program is terminating, you can use TerminateThread
My latest articles:
XOR tricks for RAID data protection
Win32 process suspend/resume tool
|
|
|
|
|
You could also use a timer catching the WM_TIMER message. To make the trade terminate, send it the WM_QUIT message, which it will also catch.
Michel
It is a lovely language, but it takes a very long time to say anything in it, because we do not say anything in it, unless it is worth taking a very long time to say, and to listen to.
- TreeBeard
|
|
|
|
|