|
size_t size = sizeof(vertex_list) / sizeof(Point3);
won't work since vertex_list is a pointer and its size is 4 (or 8).
This...
size_t size = sizeof(Object1_vertex) / sizeof(Point3);
...works for me (size == 3 if I initialize with 3 Point3 structs) but that makes passing the array
useless since the array is accessible from anywhere in the same file anyway.
You may need to pass the size along with the array pointer unless you can define the array with
a set size.
Mark
|
|
|
|
|
In addition to the previous answer, I suggest that you take a look at the container classes from the STL (std::list or std::vector for example). At first sight it might be more complicated but it solves a lot of problems (and finally ease your life because you won't need to manage the memory yourself).
|
|
|
|
|
Hi,
So I have this code to open a handle hKey which works fine.
RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\MyProgram", 0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
Then I try to set a value from a GUI CString member variable m_license_key into registry.
RegSetValueEx(hKey, "PROGRAM_KEY", 0L, REG_DWORD,(LPBYTE)&m_license_key, sizeof(DWORD));
The set function also works fine other than the fact that "rubbish" gets inserted as value for my registry key. In other words, HKEY_LOCAL_MACHINE\\SOFTWARE\\MyProgram\\PROGRAM_KEY is added, but the value is not what I keyed into m_license_key (it is just some strange text or some 0xHex numbers)
To be honest, I do not know what to specify for parameters 4, 5, 6 of RegSetValueEx. Any help would be greatly appreciated. Thanks.
|
|
|
|
|
I use this code...
bool CRegistry::SetKey(HKEY hKey, CString csSubkey, CString csValName, CString csVal)
{
if(hKey != HKEY_CURRENT_USER)
return false;
if(csSubkey.IsEmpty() || csValName.IsEmpty() || csVal.IsEmpty())
return false;
HKEY hWkKey;
LONG lRetorn = RegOpenKeyEx(hKey,csSubkey,0,KEY_ALL_ACCESS,&hWkKey);
if(lRetorn == ERROR_SUCCESS)
{
int iLength = csVal.GetLength();
lRetorn = RegSetValueEx(hWkKey,
csValName,
0,
REG_SZ,
(BYTE *)csVal.GetBuffer(0),
iLength);
RegFlushKey(hWkKey);
RegCloseKey(hWkKey);
if( lRetorn == ERROR_SUCCESS)
return true;
}
return false;
}
Hope this helps.
|
|
|
|
|
You can't cast a CString to a LPBYTE.
If you want the text in the CString saved then use the REG_SZ type...
RegSetValueEx(hKey, "PROGRAM_KEY", 0L, REG_SZ,(LPBYTE)(LPCTSTR)m_license_key, m_license_key.GetLength() + 1);
|
|
|
|
|
trumper wrote: I do not know what to specify for parameters 4, 5, 6 of RegSetValueEx.
They hide that information in the documentation[^]
led mike
|
|
|
|
|
led mike wrote: They hide that information
bastards
|
|
|
|
|
Thanks guys for all the help.
(BYTE *)m_license_key.GetBuffer(0) worked best for me =)
Really appreciate it.
|
|
|
|
|
How mean they do it to us
Nobody can give you wiser advice than yourself. - Cicero
ப்ரம்மா
|
|
|
|
|
Using the 2.25 version in VS2005:
I have an OnNotify() function in my parent window, and I get the GVN_BEGINLABELEDIT message just fine, but I never see a GVN_ENDLABELEDIT message. What am I doing wrong?
[EDIT]
It seems the grid only fires the message if the text in the cell changes. I fixed it in my copy of the grid and posted the fix in the article comments.
[/EDIT]
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Hi All,
Is anyone aware of the handle count for a process in windows?
Please let me know if it require further clarification.
Suraj
Suraj Gupta
|
|
|
|
|
HandleCount property of a process refers to the number of operating system handles opened by that process. I suggest you ask such questions pertaining to .NET stuff in the .NET Framework Forum.
Nobody can give you wiser advice than yourself. - Cicero
ப்ரம்மா
|
|
|
|
|
Is there any limit to that number...
Suraj Gupta
|
|
|
|
|
|
Why is that a .net specific question ?
The original poster did not mentionned the HandleCount property at all in his post.
|
|
|
|
|
That person has edited his post! He had asked what HandleCount was. Hope you understand it.
Nobody can give you wiser advice than yourself. - Cicero
ப்ரம்மா
|
|
|
|
|
Hi
The Handle count for a process is the total of handles used: Thread, opened files, events.
I think u know that the function to get HC is GetProcessHandleCount.
U have to be carefully if your app have HC that never decreases
Regards
David Leyva
|
|
|
|
|
And also except handle count we have thread count
|
|
|
|
|
Thanks alot for your replies...
Handle count for a process is limited to 10000 and it can be increased to 18000 (max limit). But I can see different process on my machine (like explorer.exe) having handle count greater than 18000.
How that process is running properly even when handle count has increase dramactically?
Suraj Gupta
|
|
|
|
|
In a previous post I was attempting to "serialize" an HICON, i.e. save it as a blob in a file or database: the opposite operation to the ExtractIcon() operation. I have since learned how to do this (see routine below).
BUT now my problem is, this routine loses color information. When the routine is run against a true-color icon, and the buffer is saved as a .ico file, and the .ico file is reloaded with ExtractIcon(), the resulting icon has reduced to 256 colors.
I think this must be a limitation of OleCreatePictureIndirect(). How can I fix my routine?
------------------------------------------------
void SerializeIcon(const HICON icon, DWORD* size, BYTE** data)
{
LPPICTURE pPicture;
PICTDESC rPD;
rPD.cbSizeofstruct = sizeof(PICTDESC);
rPD.picType = PICTYPE_ICON;
rPD.icon.hicon = icon;
IStream* pStream = NULL;
HGLOBAL hMem = NULL;
BYTE* pMem = NULL;
long lActual;
OleCreatePictureIndirect(&rPD, IID_IPicture, FALSE, (void**) &pPicture);
CreateStreamOnHGlobal(0, TRUE, &pStream);
pPicture->SaveAsFile(pStream, TRUE, &lActual);
pPicture->Release();
GetHGlobalFromStream(pStream, &hMem);
pMem = (BYTE*) GlobalLock(hMem);
*size = GlobalSize(hMem);
*data = (BYTE*) malloc(*size);
CopyMemory(*data, pMem, *size);
GlobalUnlock(hMem);
GlobalFree(hMem);
}
------------------------------------------------
<div class="ForumSig">
cheers,
Neil</div>
|
|
|
|
|
Did you find the answer to this question? I have the same problem.
|
|
|
|
|
The below code sorts a matrix diagonally. Does it, but at the end it's throwing an "illegal" may be a bad access error. Why ?
int main(int argc, char* argv[])
{
int A[5][5];int i;int j;
int temp; int c,flag;
}
input :
1-1-1
2-2-2
3-3-3
output:
1-2-3
1-2-3
1-2-3
-- modified at 6:02 Friday 12th January, 2007
*
*
|
|
|
|
|
You are accessing declared array with invalid index.
int A[5][5]; should be accessed only from A[0][0] to A[4][4] where as you are accessing it through A[1][1] to A[5][5]
Astricks wrote: for (i = 1;i<=5;i++) {
You should modify this to,
for (int i = 0 ; i <5 ; i++) at all places you have done mistake.
|
|
|
|
|
|
C/C++ arrays are 0-based, i.e. if you declare:
int a[5];
then you have the following items:
a[0], a[1], a[2], a[3], a[4];
on the other hand, a[5] , is out-of-bounds.
so the correct iteration will be
for (i = 0;i<5;i++)
a[i]= (whatever);
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.
|
|
|
|