|
jk chan wrote: you can use fopen("file","wb"); and fwrite C run time APIS.
is it so complicated?
i know how to read and write using fread and fwrite. But i want my program to use WriteFile() and ReadFile()
Some Day I Will Prove MySelf :: GOLD
|
|
|
|
|
Hi there.
I am currently using a worker thread that communicates to the main thread using a call to sendmessage everything works great but now i need to return a string from that sendmessage handler to my worker thread. How can i return data from there, is it possible?
Thanks
|
|
|
|
|
Send a pointer to a buffer in the lParam parameter, so the called function can store data in it. However make sure the buffer is big enough to receive the response. Alternatively you could use a shared buffer and protect it with locks.
I must get a clever new signature for 2011.
|
|
|
|
|
Yeah the first solution you tell about was the one i was using but i though it was ugly and not a good practice but it worked, i passed a CString pointer, but the 2nd solution you post how could it be implemented?
Thanks
|
|
|
|
|
manchukuo wrote: but the 2nd solution you post how could it be implemented?
See here[^] for some suggestions on how to implement sharing information between threads.
I must get a clever new signature for 2011.
|
|
|
|
|
Hi,
how can i use SetDllDirectory function in my project, to compile in x64 configuration manager platform?
define _WIN32_WINNT as 0x0502 ???? where i define it?
Zo.Naderi-Iran
|
|
|
|
|
zon_cpp wrote: how can i use SetDllDirectory function in my project
See here[^] for details.
zon_cpp wrote: define _WIN32_WINNT as 0x0502 ???? where i define it?
This should be added to your pre-compiled or main header file before the #include <windows.h> entry.
I must get a clever new signature for 2011.
|
|
|
|
|
I need to access a .NET web service in a native C++ application. People have suggested to use gSOAP (which is costly for a commercial license) and I have found articles where the same can be done using SOAP tool kit (which is no longer supported by microsoft)
To use SOAP toolkit method MSXML should be installed on the PC, and ours is a portable application we cannot afford it. I looked at other alternatives and found the following article - http://support.microsoft.com/kb/908574[^] But I am getting the following errors:
error C2065: 'IHelloWorldPtr' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'ptrHW'
error C3861: 'ptrHW': identifier not found
error C2065: 'ptrHW' : undeclared identifier
error C2227: left of '->SayHelloWorld' must point to class/struct/union/generic type
I am new to COM and .NET can somebody help to resolve the issue. And is this approach the write way to access .NET web services?
Thanx in advance
|
|
|
|
|
Please don't re-post your question.
I believe in LOVE AT FIRST SIGHT...
Bcoz I have loved my Mother...
even since I opened my eyes...(ICAN)
|
|
|
|
|
Hi im creating cotrols for various dialogs in my applcaition.So for each control one ID will create in resource.h .Sometimes waht happened same numeric ID is assigned to two differnt reource.It happens many of the time.
How can i avoid that?
Because of this i cannot add the resource to accelerator to assign fucntion.Every time when i add it shows resource id already exists..
Example:
#define IDC_STATE0OP 1171
#define ID_CLRPAGE 1171
#define IDC_BUTTON3 1173
#define ID_ALRMDETAIL 1173
#define IDC_ACKBUTTON 1175
#define ID_BLOCKDET 1175
Pls help me to sort out this problem.
Anu
|
|
|
|
|
Menu and taskbar IDs (for example, ID_CLRPAGE) by convention are assigned numbers greater than 32771. How did ID_CLRPAGE and ID_BLOCKDET get assigned their values in the first place?
If you used the VS resource editor, it will automatically assign the values, and it will use the lines at the bottom of resource.h that look like:
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 131
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1041
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif
These lines tell the resource editor what the next available value is, so there won't be collisions.
|
|
|
|
|
See everything is in your resource file only, if you see these macro/decalartion govern the numbering of controls
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 32771
#endif
#endif
check and correct there next count
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
In my resource.h it shows like
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 252
#define _APS_NEXT_COMMAND_VALUE 33078
#define _APS_NEXT_CONTROL_VALUE 1140
#define _APS_NEXT_SYMED_VALUE 115
#endif
#endif
Here how can i change..Can u gice ay idea?
Anu
|
|
|
|
|
Make sure that
1. all the resourses ids (like dialog) that are being used in these files are less than _APS_NEXT_RESOURCE_VALUE
2. all the control ids (i.e. button, textbox) are less than _APS_NEXT_CONTROL_VALUE value.
3. all commands (keyboard shortcuts) you have added should less than _APS_NEXT_COMMAND_VALUE
Hope it will solve your problem.
|
|
|
|
|
Hi Anu,
Sometime VS misbehave while assigning ids. i believe either try installing latest SP for you visualstudio or manually change all the ID's.
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Yes,i did like that.I changed the IDs manually.
Anu
|
|
|
|
|
I put together a program that takes a list of numbers in an array and sorts them by copying out of the first array into a second array when the value in the first array matches the maximum array element in the first array. What I cannot figure out is why when I look at the array elements saved in the final array there is a skip in element #10 to #11. In other words the second array correctly saves nine 10's and then skips element #10 and then saves the 9's starting in element #11.
#include <stdio.h>
#include <stdlib.h>
#define LIMIT 100
int roll[100];
int fin[100];
int num = 0;
int main(void)
{
int cyc = 0;
int top = 0;
int rotate = 0;
int seek = 0;
int loop = 0;
int temp = 0;
while(num < LIMIT)
{
roll[num] = rand() % 10 + 1;
printf("%i",roll[num]);
printf("\n");
num++;
}
for(cyc = 0; cyc < num; cyc++)
{
if(roll[loop] > roll[loop+1] && roll[loop] > temp)
{
temp = roll[loop];
}
loop++;
}
for(cyc = 0; cyc < num; cyc++)
{
loop = 0;
while(loop < num)
{
if(roll[loop] == temp)
{
fin[cyc] = roll[loop];
cyc++;
}
loop++;
}
temp--;
}
}
|
|
|
|
|
Posted on different site:
You are incrementing cyc unnecessarily in your for loop when you are copying.
try this
for(cyc = 0; cyc < num;)
or a while loop
cyc=0;
while(cyc < num)
|
|
|
|
|
In the second for-loop, you increase cyc in the if-statement. It's no longer necesary to also increase it in the loop:
for(cyc = 0; cyc < num;){
loop = 0;
while(loop < num){
if(roll[loop] == temp){
fin[cyc] = roll[loop];
cyc++;
}
loop++;
}
temp--;
}
modified 13-Sep-18 21:01pm.
|
|
|
|
|
Your while loop initializes the array roll with values between 1 and 10 . Note that there is no guarantee every value between 1 and 10 will actually be stored in roll somewhere; for all you know it might be an array full of 1s or full of 10 s!
In your first for loop you increment loop num times, then access roll[loop+1] ; on the last loop you will read past the end of the array, invalidating the comparison, so if the biggest value in your array happens to be stored in the last element, it may or may not be stored in temp . In Debug this probably won't cause a problem, as likely roll[100] would just access fin[0] instead, and that would be initialized to 0. In Release mode however there is no guarantee that the array fin will be initialized to 0 - in my experience it most likely will not.
The intention of the first for loop appears to be to find the largest value in roll and store it in temp . Note that this value may be anything between 1 and 10 !
The error you noticed, however, is due to what the others already pointed out above: you shouldn't increment cyc in the outer loop! What happens is this: the inner loop finds all items in roll that correspond to the temp value, store it in fin , and increment (correctly) the index cyc . Once you're at the end of the loop, temp gets decremented, then cyc gets incremented again, causing the gap you noticed, then you go on searching for occurences of your now decreased value of temp .
The reason for this confusion is that the outer loop is really all about temp, not cyc! The clearest way to write your last loop would be like this:
cyc = 0;
for (int compare = temp; compare > 0; compare--) {
for (loop = 0; loop < LIMIT; loop++) {
if (roll[loop] == compare) {
fin[cyc] = compare;
cyc++;
}
}
}
Note that I replaced num with LIMIT. This doesn't change anything in your code, but it is easier to read, as a reader unfamiliar with your code doesn't have to interpret all of it just to find out what value num would hold. Also it's less likely to accidentally mess up if you later change your code and possibly change the value of num.
Now, while the above is clearer, it is also potentially less efficient; you used the condition cyc < num , which would lead the outer loop to terminate, even if temp is still > 0 , e.g. when there are no 1 s in the array roll . So you could replace compare > 0 in the above loop with cyc < num , or, preferably, cyc < LIMIT .
You could of course also avoid the introduction of yet another variable (compare ) and just write the outer for loop like this, trading clarity for shorter, and potentially more efficient, code:
for (cyc = 0; cyc < LIMIT; temp--) {
}
|
|
|
|
|
Hi,In my MDI application,i want to close each child window with confirm message.
For this in each view,OnClose() fucntion i coded like
void CAlarmView::OnClose()
{
if(AfxMessageBox("Do you want to close the Alarm?",MB_YESNO|MB_DEFBUTTON2,NULL) == IDNO)
return;
CView::OnClose();
} But when i close the child window it does not go this OnClose() function itself.
So i gave this OnDestroy() fucntion.
void CAlarmView::OnDestroy()
{
if(AfxMessageBox("Do you want to close the Alarm?",MB_YESNO|MB_DEFBUTTON2,NULL) == IDNO)
return;
CView::OnDestroy();
}
When the application shows this confirm message,when i press NO , the child window is getting closed.Actually if i press YES then the child window should close,if i press NO it doesnot get close.
Pls help me in this concern
Anu
modified on Wednesday, February 16, 2011 2:02 AM
|
|
|
|
|
hi,
actually, your condition is wrong. change like this.
if(AfxMessageBox("Do you want to close the Alarm?",MB_YESNO|MB_DEFBUTTON2,NULL) == IDNO)
return;
else
CView::OnDestroy();
or
if(AfxMessageBox("Do you want to close the Alarm?",MB_YESNO|MB_DEFBUTTON2,NULL) == IDYES)
CView::OnDestroy();
Hope this will work..
Regards.
A. Gopinath.
|
|
|
|
|
OnDestroy[^] is called by the framework. Can you debug to check the issue with OnClose?
I am a HUMAN. I have that keyword in my name........
_AnsHUMAN_
|
|
|
|
|
I changed the code to childframe OnClose(),there im checking each window and gave this AfxMessageBox and it works fine.Thank for ur support.
void CChildFrame::OnClose()
{
if(iWindowNumber == 1)
{
if(AfxMessageBox("Do you want to close the Alarm?",MB_YESNO|MB_DEFBUTTON2,NULL) == IDNO)
return;
}
CMDIChildWnd::OnClose();
}
Anu
|
|
|
|
|
Hello , I'm programing in VC++ 6, and the entire project runs in a computer without keyboard but with touch screen.
The thing is that a have two app runnig at the same time, and I want the user to be able to switch between these apps by touching in a third app (called "Switcher",wich is always on top), this third app is a dialog based app, dialog's size is small and it has only two buttons, one for bring the first app to front and the other button to bring to the second app.
The project has to run over win 98 an over win XP.
How can i do to get wich app is The "Switcher" and bring the other to front but under the "switcher"?
|
|
|
|