|
Stephen Hewitt wrote: If you've already got a debugger attached you will not be able to attach another
We have not attached the MSVC++ debugger exlpicitly yet, I only thought the popup is from the debugger that automatically started, but looks like the popup is from the executable itself. Does this mean we can still attach WinDBG and take a dump?
thanks!
|
|
|
|
|
Yes. If the problem is hard to reproduce a would take a dump (no pun intended). That said a simple stack trace of the offenting thread will probably do. Look for a call to __purecall followed by a MessageBox call. The frames just before the __purecall should shine some light on your problem.
Steve
|
|
|
|
|
Thank you very much for the suggestions. The error has happened on a remote computer, and I have asked the remote user to send me the call stack. Let's see if I will be able to figure out the cause of the error.
thanks!
|
|
|
|
|
Attach a debugger and then look at the call stack. The last stack frame (not counting the stuff that is showing the message box) will be in the CRT function that uninitialized vtbl pointers point to. I forget the exact name, it's something like __purecall() . Just go up the stack and look for calls to virtual functions.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
- i wrote a win32 app to get text from a combo box , it worked fine except when i tried to test it with my google toolbar combobox it returned only the first char in each row !
does that have to do anything with unicode ? , how can i fix itto get the whole string not just the first character ?
|
|
|
|
|
If you're interpreting a unicode string as an ANSI string this is exactly what will happen - How exactly are you getting the text?
Steve
|
|
|
|
|
I am getting it like this :
SendMessage(clickedWindow , CB_GETLBTEXT , i , (LPARAM)buffer[i]);
where buffer is of type TCHAR
|
|
|
|
|
Try code like this (it should return the text in ANSI):
char buffer[256];<br />
SendMessageA(clickedWindow, CB_GETLBTEXT, i, reinterpret_cast<LPARAM>(buffer));
Or if you always want it in unicode:
WCHAR buffer[256];<br />
SendMessageW(clickedWindow, CB_GETLBTEXT, i, reinterpret_cast<LPARAM>(buffer));
In short, let the system do the conversion for you.
Steve
|
|
|
|
|
ahmed_barakat wrote: (LPARAM)buffer[i]);
...(LPARAM)buffer)
Jesus Lives Forever - Amen <marquee direction="up" height="40" scrolldelay="10" step=".5" scrollamount="1" style="background:#99ccff;border-bottom:thin solid 1px #6699cc">
--Owner drawn
--An eye for an eye makes the whole world blind.
--Jesus is Lord
|
|
|
|
|
At first I thought that but the [i] bit made me think that perhaps buffer is an array of pointers to buffers.
Steve
|
|
|
|
|
Almost certainly a unicode string, seeing as the second byte would be a 0 ( which would be regarded as a null terminator ). Use USES_CONVERSION and W2A to convert it.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Hi,
I need to find out, programmatically, what is the name of the machine's OS Administrators group.
I.e. Administrators for English OS, Administrateurs for French OS and etc.
How can I achieve that ?
Thanks!
--
Thank you!
|
|
|
|
|
Call CreateWellKnownSid() to make a SID for the admin group, then call LookupAccountSid() to get the name. (CreateWellKnownSid() is on XP only)
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
Assuming that I know my program will not need to dynamically allocate more than 5 pages of memory(5*4096),Can I use this function for my memory allocations ?This function gets a pointer,number of bytes requested and returns the address of memory(in p).If failed returns 0.
The first time this function is called it reserves 5 pages of memory and saves its start address in "bm" variable.and commites one page of those pages."l" variable acts as a counter(accumulator) that ranges from 0 to 4096(one page size);I used this to to decide when to commite a new page.(when the size requested by the "size" parameter plus "l" exceeds 4096)and to return the next address to the caller(p=(char*)m+l)."m" variable is start address of the commited page.Memory is returned in the "p" parameter.
In short this function commites 1 page ,returns requested addresses from that page until reaches the end of the page where it commites another page.
According to my assumption can using this function cause trouble in my application or not.
I tested this function for allocating int ,double,string data types and struct and this worked.I mean I could write to the returned address and read the written values.I would have used "npr" and "npc" variables to keep the count of reserved and comitted pages respectively but accoring to my assumption I found them useless.
Please evaluate the function and tell me the probable problems that you think can occure when used.Or any suggestion ,experience you may have .Guide me
(consider my assumption)
int mem(void* &p,int size)
{
static void * m=0;
static void * bm=0;
static int l=0;
static int npr=5;
static int npc=0;
if(bm==0)
{
bm=m=VirtualAlloc(0,5*4096,MEM_RESERVE,PAGE_READWRITE);
if(m==0)
return 0;
m=VirtualAlloc(m,4096,MEM_COMMIT,PAGE_READWRITE);
}
if(size+l>=4096)
{
if((m=VirtualAlloc((char*)m+4096,4096,MEM_COMMIT,PAGE_READWRITE))!=0)
{
l=0;
l+=size;
p=m;
}
else
return 0;
}
else
{
p=(char*)m+l;
l+=size;
}
}
-- modified at 17:26 Monday 30th January, 2006
|
|
|
|
|
Why are you doing manual virtual memory management for such a small amount of memory? If having a statically-allocated buffer is the goal, just do new BYTE[5*4096] and use that.
--Mike--
Visual C++ MVP
LINKS~! Ericahist | NEW!! PimpFish | CP SearchBar v3.0 | C++ Forum FAQ
|
|
|
|
|
Hi Mich
You mentioned a nice point,I wouldnt have thought of that.
Yes your right for small amount of memory its not a good way.But how about when I was to use larger blocks(for example: 100*4096).Does it work fine for that case ?
Though your right but allocating such small memory dynamically can have an advantage; Pages are not allcoated in physical memory until they are really needed.(Reserved memory is not allocated in physical memory till commited).
Thanks for your reply.
-- modified at 18:01 Tuesday 31st January, 2006
|
|
|
|
|
I think this can be possible to use your allocated space, As Mike was saying in another message, I am also not finding this much useful. As If you have some use of this in your mine, please let us know.
some points I found are :
** it'll never release memory, whenever you need memory you are just allocating(if not available then new page). If it started using same memory then it would become long task.
** If one have to use any dynamic variable like CArray, CMap etc. as used in MFC.
Regards,
Sumit K.
Never consider anything impossible before trying to solve that..---Sumit Kapoor--- sumit_kapoor1980@hotmail.com
|
|
|
|
|
Hi,
Releasing memory is easy since I have stored the start address of pages in "bm" variable.Calling "VirtualFree" will do it.
About use of this :
Why I started to use it has a story.When I was very beginner.I decided to write a parser which can evaluate mathematical expressions.I implemented that using linklist and stack data structures.I stored my postfix form of my expressions in nodes of a link list.I allocated memory using "new" operator in that.I made it.After that I decided to make an application that draw functions graph using that parser I made.I coded the program.It worked in "Debug" version of my program.But when I changed the build mode to release.The program didnt work and It caused "Access violation" error.That was when I thought that "new" operator didnt work well.Because my program worked in debug mode but...
Thats why I became intrested to use my own memory management.This way I feel better.I want to know what I do .And to know Im doing it right...Story became long
Thanks
-- modified at 18:22 Tuesday 31st January, 2006
|
|
|
|
|
I'm writing code to try to interface with some custom data acquisition boards our company produces. Actually, I've written several interfaces for these boards over the years as changes in technology have forced us to adapt (ISA->PCI, DOS/Win3.1, Win9x, WinXP). Recent changes in motherboard design have foiled a kludge I've been using to acquire the P&P assigned port addresses for the boards, so I'm scrambling to find a way to acquire those port addresses.
I've downloaded the very excellent EnumDeviceProperties[^] demo project submitted by A. Riazi, but the properties enumerated by this project do not include the resources for Port, Base memory, IRQ assignments, etc., as are shown on the Device Manager properties resource sheet.
Obviously there is some way to access this information. Could someone point me in the right direction?
TIA,
-Dethulus
-- modified at 16:02 Monday 30th January, 2006
|
|
|
|
|
Does the driver support WMI?
8bc7c0ec02c0e404c0cc0680f7018827ebee
|
|
|
|
|
I'm not sure how to answer that question. The current board was adapted from an ISA board with hardwired port addresses. This has been piggybacked onto a PCI interface using a PLX chipset. The devices show up in the Hardware Manager as "Other Devices" and they have valid port and base address values.
Using WMIC PORT I get a listing that includes the port addresses in use by the devices, but that doesn't give me enough information to determine which entries correspond to the devices I'm trying to address.
-Dethulus
|
|
|
|
|
I've solved my problem for the time being. Still yet I'd like to know how to work the magic of getting hardware resource information from the operating system, as the Device Manager and PCITree seem to be able to do. I'm sure it involves esoteric practices such as dynamically linking to hidden exported functions, but it would sure be nice when doing the kind of stuff I do.
In case anyone's interested my problem was not because of a kludge as I had initially suspected, it was because of a programming gaffe in a fellow programmer's code with a hardcoded bus number. The new motherboards were assigning our cards to a different bus. Everything else was working except for the line that used the hardcoded bus.
Anyway, thanks for the consideration...
-Dethulus
|
|
|
|
|
I am currently using VC2005 which provides XP style buttons by default. When I load an icon, though, the button changes to the old Office 2000 style. If all the buttons where the same style it wouldn't be a problem, but some buttons are XP style while the others are 2000.
Is there any way to change this?
Thanks!
|
|
|
|
|
AFAIK you'll have to draw the buttons yourself...
|
|
|
|
|
Hi all - I am trying to follow this Walkthrough from the msdn:
http://msdn2.microsoft.com/en-us/library/ms235628.aspx[^]
my problem is in the part where is says:
"To create a new Windows Forms control project
On the File menu, click New, and then click Project….
In the Project Types pane, select CLR in the Visual C++ node, then select Windows Forms Control Library in the Visual Studio installed templates pane.
I do not have this CLR project template... what am I missing?
I am running Visual Studio .net ver.2002, student edition.
Thanks for any info - mutty
|
|
|
|