|
Thanks a lot; this works just fine.
William
|
|
|
|
|
|
hi..
i need a sample program for
"opening and closing ACS Stream"
will u please provide me with the above..
yamuna
|
|
|
|
|
I am working on a scanning project. The scanners I am working with do not support TWAIN job control. We are wanting to fake job control by using solid black pages as our job control pages. The TWAIN software I am using gives me a DIB per page that is scanned. I want to inspect the DIB during scanning and start a new image when I find a solid black image. I have looked around but can't find anything that does this. I was wondering if anybody had a suggestion. Please let me know.
|
|
|
|
|
You can loop through the byte array RGBQUAD values in the pixel data and compute the percentage of black. If the RGB value is, let's say, less than RGB(5,5,5) then consider it black. Otherwise, consider it non-black.
onwards and upwards...
|
|
|
|
|
That's what I like - a simple, brute-force approach! Not elegant but entirely functional. And speed is not an issue, since it will be way faster than the scanning process.
|
|
|
|
|
I want to change my Win32 console Application exe Symbol by a given .bmp image.Pls guide me how to do it.Actually i am stuck up how to replcce it with my .bmp image
Pls help me.Thanx in advance
never say die
|
|
|
|
|
|
Actually I want to change the icon (symbol) of Win 32 console .exe by any .bmp or .ico.So that my symbol appears rather than the default symbol of .exe is visible
Pls help me
never say die
-- modified at 9:43 Wednesday 15th February, 2006
|
|
|
|
|
If you are working with the Microsoft Visual Studio development environment, you can craete a resource file (appname.rc) and add an icon (usually IDR_MAINFRAME) in there. This icon will be used as the application's icon in explorer. Don't forget to make both the large version (32*32) and the small version (16*16), since both may be used depending on the settings of the explorer.
Good luck
William
|
|
|
|
|
Engberts wrote: This icon will be used as the application's icon in explorer. Don't forget to make both the large version (32*32) and the small version (16*16), since both may be used depending on the settings of the explorer.
this is not applicable for running console application!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
Yes it is!
I have a number of console applications for which I used this. In Visual Studio, you add a file to the sources folder with a name like "AppName.rc". studio will ask something like "No such file exists, add anyway?" to which you reply confirmative. Next, you must open the file (again from the sources folder) Studio will again ask: "This file does not yet exist; do you wat to create a new file?" Again, you answer "yes". Then, there will be an empty rc file and a "ResourceView" tab will be added to your project, between the "ClassView" and the "FileView" tabs. When you open the resource, it will have no resources yet, so you add an icon. You must make sure to create this icon in both 32*32 bit version as well as in 16*16 bit version. When you then recompile your console application, there will be no changes to the application itself, nor to the console window in which it runs. However, if you browse to your program using explorer, it will show you your icon next to the filename, rather than the default exe icon.
In the same way, you can add version information to your program. You can view this version information by selecting "Properties" in explorer. The issue here is that both the version information as well as the icon are kept in the exe's header information, which is not loaded at runtime, but which is used by explorer to show information about the exe file. This is also the reason why you cannot use the version information from your resource at runtime in your application; it's simply never loaded!
Regards,
William
|
|
|
|
|
Engberts wrote: hich is not loaded at runtime, but which is used by explorer to show information about the exe file. This is also the reason why you cannot use the version information from your resource at runtime in your application; it's simply never loaded!
Do you see the Icon you create/attached with the console application in taskbar or caption of application window when you run that application!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
Sir
I want 2 know that weather we can call SAME function
from mutiple threads if yes what issues we must consider?
will same block of code will b code will be copied in
diff threads? iam waiting for ur reply sir.
bye
|
|
|
|
|
In C/C++, local variables are stack based so any variables declared inside of the routine are ok unless they are static.
The problem boils down to the routine trying to access the same piece of data in two threads. If this is what is happening, then you will have problems unless the data is read only and will never be written to.
For example:
int Sum (int a, int b)
{
int c = a + b;
return c;
}
This routine can be called from many threads at the same time.
For example:
int value = 0;
void ChangeValue (int a)
{
value += a;
}
This routine will not work well unless only one thread calls the routine at a time.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Tim Smith wrote: This routine will not work well unless only one thread calls the routine at a time.
But Windows Programming provides us facility of Syncronization Objects
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
That is true, but I was trying answer his question without giving him so much information that he wouldn't understand the answer.
If he wishes to access data between more than one thread, he can ask that in a follow up question.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Tim Smith wrote: he can ask that in a follow up question.
As Usual, You are Right, Sir!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
It is possible to call the same function from two different threads. Normaly this
holds no problem.
There are indeed issues you must consider when doing is.
Normal vars are placed in the stack and since each thread has his own stack.
But static vars are not located on the stack , so both threads could take action
on those objects.
Another issue is that some objects aren't thread safe, so using such vars in a
function causes the function to be not thread safe
codito ergo sum
|
|
|
|
|
In short, the answer is maybe. In depends on the function. There are many issues such as:
- Does the function access gloal data.
- Does it call APIs which are not thread safe.
- Does it use APIs that have thread affinity.
This is not a simple question - Multithreading is complex and subtle!
Steve
|
|
|
|
|
E.Satish wrote: I want 2 know that weather we can call SAME functionfrom mutiple threads if yes what issues we must consider?
Yeah you can, but your application chances for crashes are very high.if still want to use same function in different thread you can use Syncronization objects like critical section , semaphore etc
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
|
|
|
|
|
Need your thoughts and/or opinion. Question at the bottom.
When user closes the modeless dialog box you can trap the WM_CLOSE message to insure proper cleanup.
According to Help
CWnd::OnClose
The framework calls this member function as a signal that the CWnd or an application is to terminate. The default implementation calls DestroyWindow.
I found two ways to approach the user who closes the modeless dialog box by clicking the x on the upper right hand corner of the window
Looking at the first example below.
I found out that if you don't call DestroyWindow() from your OnClose() and you don't want multiple instances of your modeless opened you will need to set the pointer to NULL here (otherwise your pointer value can't be used as a flag to prohibit other instances of your modeless dialog from being opened). PostNcDestroy apparently isn't run until the parent is destroyed. Once the parent/owner is closed then a PostNcDestroy is run for each modeless that opened - one right after another.
void CDialogDerived::OnClose()
{
CDialog::OnClose();
m_pParent->m_pModelessDialog = NULL;
}
void CDialogDerived::PostNcDestroy()
{
CDialog::PostNcDestroy();
m_pParent->m_pModelessDialog = NULL; //in case destroy window is called from your code and OnClose is never run
delete this;
}
Example 2. This seems like a cleaner approach as the Dialog is destroyed immediately and thus your pointer is set to
NULL immediately
void CDialogDerived::OnClose()
{
CDialog::OnClose();
DestroyWindow();
}
void CDialogDerived::PostNcDestroy()
{
CDialog::PostNcDestroy();
m_pParent->m_pModelessDialog = NULL;
delete this;
}
Any thoughts pro and con to either of these approaches? I'm curious why the PostNcDestroy is not run promptly
with the OnClose call on the first example.
Thanks!
|
|
|
|
|
Why make this so complex? You can easily check if the window still exists from the parent with a check like this:
if ( NULL == m_pModelessDialog->GetSafeHwnd() )
{
if ( NULL != m_pModelessDialog )
delete m_pModelessDialog;
} And just forget about all the messy cleanup in the dialog itself.
|
|
|
|
|
mx483 wrote: you don't want multiple instances of your modeless opened you will need to set the pointer to NULL
This is a curious way to avoid multiple instance. Is this a child dialog of your app or, the app itself ? Why don't you check if the dialog already exists before starting a new one ? If you destroy your dialog, a simple check on SafeWindow will tell you that your pointer is not used anymore. YOu could even fire up a message to your parent to reset the pointer if you really want to.
As for the examples, I think this is sufficient, no need to intercept another message.
void CDialogDerived::PostNcDestroy()
{
m_pParent->m_pModelessDialog = NULL;
delete this;
CDialog::PostNcDestroy();
}
~RaGE();
[edit] I wrote teh same as Shog because I forgot to post my message right away... Nevermind, and great to see we are on the same wave length [/edit]
-- modified at 10:01 Wednesday 15th February, 2006
|
|
|
|
|
Thanks for the responses. I do check for the NULL pointer before opening an instance. I didn't include that code because it isn't relevant. What is relevant though is the correct way to handle the WM_CLOSE message.
And my curiosity was I didn't understand why the WM_CLOSE message didn't run the Destroy Window right away - only after parent was closed.
|
|
|
|