|
Wow! You really do know what you're talking about, don't you? I stand corrected, I bow my head before you
I did a search on MSDN on the subject (yeah, I know, should have done it before), and article Q190799 does a pretty good job explaining things (at least after I had read your post first
I will immidiately check if my current multi-DLL application project is linked to the MT DLL version!
Cheers
Steen.
"To claim that computer games influence children is rediculous. If Pacman had influenced children born in the 80'ies we would see a lot of youngsters running around in dark rooms eating pills while listening to monotonous music"
|
|
|
|
|
Hey Guys
I have just made an installer for an application i have finished writing. This installer needs to right a value in the registry for a default file type. What would be the quickest way.
the value has to go into HKEY_LOCAL_MACHINE\SYSTEM\CLASSES\Signedfile\DefaultIcon\
the location of the icon goes into the default value of the DefaultIcon key.
Cheers
Peter
|
|
|
|
|
I believe WriteProfileString does it, but I always use a class from CP called CRegistry.
Christian
After all, there's nothing wrong with an elite as long as I'm allowed to be part of it!! - Mike Burston Oct 23, 2001
|
|
|
|
|
You need to use the function RegSetValueEx or the class that said Christian...
Best Regards....
Carlos Antollini.
|
|
|
|
|
maybe helpful......
BOOL SetRegKeyValue( LPTSTR pszKey, LPTSTR pszSubkey, LPTSTR pszValue )
{
BOOL bOk = FALSE;
LONG ec;
HKEY hKey;
TCHAR szKey[256];
lstrcpy( szKey, TEXT("SOFTWARE\\") );
lstrcat( szKey, pszKey );
ec = RegCreateKeyEx(
HKEY_CURRENT_USER, szKey, 0, NULL, REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,NULL, &hKey, NULL );
if( ERROR_SUCCESS == ec ){
if( NULL != pszValue ){
ec = RegSetValueEx(
hKey, pszSubkey, 0, REG_SZ, (BYTE *)pszValue,
(lstrlen(pszValue) + 1) * sizeof(TCHAR) );
}
if( ERROR_SUCCESS == ec ) bOk = TRUE;
RegCloseKey(hKey);
}
return bOk;
}
|
|
|
|
|
Could someone tell be how or where to find how to make a dinamic multidimensional array or some easier alternatives?
<marquee>Raffi
|
|
|
|
|
OK, I'll tell you how to find what you're looking for.
- Fire up a browser and visit www.google.com.
- In the search box, type "multidimensional arrays". (Omit the quotes.)
- You'll see a page of links. Click on the second link (www.eskimo.com/~scs/cclass/notes/sx4ba.html).
- Read the page content.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
i'd use a vector of vectors.
-c
#define O 0.05
#define I(c) putchar(c)
main(){int I(int);double l[6];char lO[5];for(*(lO+1)=0;*(lO+1)<'2';I(0x0A),(*(l+5))=-25*O+((*(lO+1)
)++)*O)for((*(lO+2))=0;(*(lO+2))<'2';(*(l+4))=-40.*O+((*(lO+2))++)*O){for((*(l))=(*(l+1))=0,
*(lO)=1;++*(lO)&&(((*(l+2))=((*(l))*(*(l))))+((*(l+3))=((*(l+1))*(*(l+1))))<4.);(*(l+1))=(*(
l))*(*(l+1))+(*(l+5))+(*(l+1))*(*(l)),(*(l))=((*(l+2))-(*(l+3)))+(*(l+4)));I((*(lO)?42:0x20));}}
|
|
|
|
|
oups
Dynamic Multidimensional Array are very easy to create... but harder to use.
look at the creation of a 2d Array
int x = 100;
int y = 200;
int *MyArray;
MyArray = new int[x][y];
and to acces (here initialisation) you must do:
int i,j;
for(i=0;i<x;i++)
for(j=0;j<y;j++)
*(MyArray+i*y+j) =0;
and now ww wan't it 4d
int *MyArray;
MyArray = new int[x*y*z*a];
//and to acces
int i,j,k,l;
for(i=0;i<x;i++)
for(j=0;j<y;j++)
for(k=0;k<z;k++)
for(l=0;l<z;l++)
*(MyArray+(i*y*z*a)+(j*z*a)+(k*a)+l) =0;
delete MyArray;
hope there is no error
Remi Morin
Rmorin@Operamail.com
Remi.Morin@Lyrtech.com
|
|
|
|
|
What kind of data do you want to store?
Todd Smith
|
|
|
|
|
C++ doesn't directly support dynamic multidimensional arrays, however there are ways although a bit more complicated than necessary. Here is another example on how to create one. Unlike Remi Morin's "version" this one is a little harder to create but alot easier to use. And it's alot faster too I guess, since there is no multiplication necessary to access the data. This version does take up a bit more memory though...:
#include "memory.h"
#include "new.h"
void main()
{
int x = 4, y = 7, z = 9;
int i, j, k;
int nSize = x * y * z * sizeof(int);
int* p = (int*)::operator new(x * y * z * sizeof(int));
int* q = p;
::memset(p, 0, nSize);
int*** a = new int**[x];
for (i = 0; i < x; i++)
{
a[i] = new int*[y];
for (j = 0; j < y; j++)
{
a[i][j] = new (q) int[z];
q += z;
}
}
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++)
{
for (k = 0; k < z; k++)
{
a[i][j][k] = i + (j * x) + (k * x * y);
}
}
}
for (i = 0; i < x; i++)
{
delete[] a[i];
}
delete[] a;
::operator delete(p);
} Remember that the array objects will not be destructed using the destructor (if any) when deleted. It's possible to make that happen too of course by implicitly calling each and every destructor before deleting the array data. This must be done if the data stored in the array is not of a primitive type, or if for some reason the objects do not need to be destructed.
The included "new.h" file is necessary for using placement new used in the last for-loop in the process of creating the array. This places the allocated object(s) (int's in this example) at the specified pointer (q).
Sprudling
|
|
|
|
|
I've try it but I have a problem with this line in debug mode
int* p = (int*)::operator new(x * y * z * sizeof(int));
I'm unable to compile.
this error raised
E:\woop\woopDoc.cpp(827) : error C2665: 'new' : none of the 4 overloads can convert parameter 1 from type 'char [20]'
In release mode it's ok it work very fine
Why it dos'nt work in Debug?
Remi Morin
Rmorin@Operamail.com
Remi.Morin@Lyrtech.com
|
|
|
|
|
What?! I have no idea why it want to convert anythingat all from char[20] Since it's just in debug mode, my best guess is that someone or something somehow has edited your "new.h" file. Try replacing it...
Sprudling
|
|
|
|
|
There are all sorts of structures, depending on what you're storing and how the "dynamic" bit occurs.
Often you'll want to create a class for each dimension. Along the lines of
<br />
class Cell {<br />
.. whatever each cell stores<br />
};<br />
class Row {<br />
..<br />
..<br />
..<br />
Cell &operator[](const int idx);<br />
<br />
}<br />
<br />
class Matrix {<br />
..<br />
..<br />
<br />
Row &operator[](const int idx);<br />
<br />
};<br />
<br />
Then you can do:
<br />
Matrix mat(...);<br />
Cell v1,v2;<br />
mat[row][column] = v1;<br />
<br />
v2 = mat[row][col];<br />
<br />
How the data are to be organised within the Matrix and Row classes depends on how it's used. Is it sparse? Does it grow and shrink? Are new elements added in the middle or only appended?
You can use one of the standard collection classes within your classes, or you can brew your own list or array structure.
You may also want to add a exception for index out of range.
|
|
|
|
|
When I try to create a variable for a static control (a simple text static control, not that static which you can right click on and chose to put an image on or a rectangle, a simple text static... hope you understand! ) it gives me this error message:
c:\program\microsoft visual studio\myprojects\reminder\reminderdlg.h(44) : error C2040: 'm_Static3' : 'class CString' differs in levels of indirection from 'class CWnd *'
I putted a static control on the dialog and then gave it an ID (IDC_STATIC3).
Then I right clicked on it and created a variable for the control( a CString).
And then it wont work for me!! GRRR!!
What to do???
------------------------------
CodeCracker - That's me!
------------------------------
|
|
|
|
|
When you creted the variable with the class wizzard you select object and no CString.
Delete all the references of your variable and make again the variable and have special care in the category you must to select the categoy value and variable type CString....
That is all...
Best Regards...
Carlos Antollini.
|
|
|
|
|
Sorry... I found wath it was now... hehe... my fault!!
It was a varible with the exactly same name!
hehehehe.... That's what happends when you write much code!!
------------------------------
CodeCracker - That's me!
------------------------------
|
|
|
|
|
Don't worry about that...
But For tomorrow you must to write 1000 times:
I don't must write two variables in the same class with the same name.
Cheers!!!
I want
Carlos Antollini.
|
|
|
|
|
just two word...
cut and paste
1000 times:
1000 times:
I don't must write two variables in the same class with the same name.
I don't must write two variables in the same class with the same name.
I don't must write two variables in the same class with the same name.
I don't must write two variables in the same class with the same name.
...
Remi Morin
Rmorin@Operamail.com
Remi.Morin@Lyrtech.com
|
|
|
|
|
hhhmmmmm.
And what about
void main()
{
int i = 0;
for(i = 0; i < 1000; i++)
printf("I don't must write two variables in the same class with the same name.\n");
}
Best Regards!!!
Carlos Antollini.
|
|
|
|
|
Netmeisters,
I am writing a program for the Pocket PC which, among other things, communicates with a Linux server via SSL. The server is using OpenSSL, and the Pocket PC program uses the secure socket layer functionality intrinsic to the Pocket PC. It takes only a couple of steps to "turn on" SSL on the Pocket PC and, once this is done, the program completes the SSL handshake with the server and all is well. EXCEPT that the Pocket PC program has to include a call back which is supposed to check the certificate sent from the server, and there is absolutely NO documentation as to how to do this. The Pocket PC does not use the usual Microsoft Schannel interface to do SSL, so the Schannel documentation apparently does not apply.
Any suggestions would be welcome, even just suggestions as to where I might find documentation, newsgroups to post the question, etc.
Thanks,
Matthew Fleming
|
|
|
|
|
I've created an activeX that responds to mosue events by using the class wizard and adding message maps for the WM_LBUTTONDOWN an WM_LBUTTONUP Messages. When I test the ActiveX in the ActiveX Control Test Container, the mouse events work. When I drop the ActiveX control on a Dialog in another project, the events do not work.
Can someone please shed some light on what I am missing to get my mouse events working properly.
Thanks!
|
|
|
|
|
Hello everyone this is a question regarding the outlook bar control on
http://www.codeguru.com/controls/outbar.shtml
I am having problems drawing the folders. I am using this control with my own view class and I create the splitter windows and call this control on top of it. However I am not able to draw 3 folders. I have added three folders and the one on top seems to be fine but folder 2 and 3 at the bottom dont turn out to be fine. Folder 3 doesnt appear at all(and instead of folder 3 there is whitespace) and only half of folder 2 is seen. So I was wondering if any one can help me out. I tried debugging but cant figure out what the problem is.
Thanking you in advance for your help
vg
|
|
|
|
|
I have couple of questions, both related.. I would really really love to have even one answered .. Please help ...
Question 1) I place a CEdit control on a View (CView Derived) , using
CEdit's Create() function.. I want to allow the user to click on the Control in the View and to be able to drag and drop it at any new location in the View.. How do i implement this ??
Question2) I Created a AppWizard based MFC container application...
I was able to place a RichTextBox Control in the view using COleClientItem::CreateNewItem(CLSID_RICHTEXTBOX) ... Then using the CRectTracker and its support for COleClientItem i was able to drag, drop and place my active X contol any where in the view as desired.. I want to know how i can invoke the Methods of that ActiveX control (I only have a pointer to COleClientItem's derived class variable which app-wizard created for me)....
Also can i relate a CEdit control variable to a COleClientItem??
Thanks in Advance
ananth
|
|
|
|
|
to make drag and drop work you will have to implement OnDrop BeginDrag and DoDragDrop(Ibelieve this is the name). If you go to your view class and open up ClassWizard you will see a bunch of message handlers and if you scroll down you will see the ones for dragging and dropping. Also you might have to implement OnLButtonClick to instantiate your drag and drop. Hope this helps.
vg
|
|
|
|