|
Very good
The oops function needs a modification though: All the internal stack variable need to be changed to static or the address of the returned array and all the pointer it contains will be invalid after leaving the function.
int *(*oops())[3]
{
static int m = 0;
static int n = 1;
static int p = 2;
static int *a[3];
a[0] = &m;
a[1] = &n;
a[2] = &p;
return &a;
}
int main()
{
int* (*t)[3] = oops();
for( int i=0; i<3; ++i )
std::cout << *(*t)[i] << std::endl;
return 0;
}
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|
|
Are you sure it isn't int* (*table)()[30] ? (Note the position of the empty () ). That would mean
table is a pointer to a function
which takes no parameters
and returns an array of 30 int*
I can't tell you from just trying to manually parse it what it means to have (*table()) instead of (*table)()
|
|
|
|
|
Intellisense calls it "int **table"
|
|
|
|
|
thank u all for the clear replies
but why we need to say that the pointer is for array of 30 int pointers
its not enough to know the first pointer of the array to access its content ?
thanks
|
|
|
|
|
Ayman,
Ultimately the writer of the function chose to have the function return this type. C and C++ compilers then enforce type safety forcing you to interpret this complex type.
Certainly the writer could have had the function returned an int pointer. Doing so, however, probably did not give the function caller what the function writer predicted the caller would want.
If you are the function caller, you probably know best if the writer correctly predicted what you wanted. If the writer was wrong, maybe you want to rewrite the function or wrap the function to return what you want?
|
|
|
|
|
Hi all,
How can make the output not to repeat again for many players. here is part of code.
struct
{
int face;
unsigned int value;
}
card[13] =
{ {'2', 2},{'2', 3},{'2', 4},
{'5', 5},{'6', 6},{'7', 7},
{'8', 8},{'9', 9},{'X', 10},
{'J', 13},{'Q', 12},{'K', 11},
{'A', 1}
};
char suit[4]={'D','C','H','S'};
ex of output is (1 player): D9 ,H2,SQ....
(2 player) : CX,H8,D9...
D9 came to second time again!!!
sometimes cards repeat only in 1 player !! pls help me to solve out.
|
|
|
|
|
See
[^]
I also suggested to write an article on such thing (is somewhere a volunteer?)
Hope that helps.
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.
|
|
|
|
|
The simplest solution would be to expand the definition of a card to include the suit; that will also simplify the code dealing with the individual cards.
If you only wish to use a single array to keep track of all the cards, as implied, I would also add a value to the card definition that indicates if the card has been dealt, discarded, or is still available in the deck.
Additionally I would separate the card structure definition from the array declaration so that you would have more flexibility.
If I was creating a card game then a card would be in one of three places:
The Deck: Cards waiting to be dealt (not in play yet).
The Discard Pile: Cards that are out of play.
A Users Hand: Cards that are still in play.
Depending on the game there may be a fourth place (or others):
On the Table: Cards that are in play but available to every one (like in Texas Hold-em).
Ultimately the best way to insure that the cards never repeat is to place them in one and only one location at a time. If the card is in a player's hand then it can not also be in the deck or discard pile, if the card is in the discard pile it can not also be in the deck or the player’s hand.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|
|
Hi all,
I need to create a win32 service that logs all the user events when started on a client machine. That is, once the service is started, I need to be able to detect that the user has clicked on an icon, typed text, etc.... and log all these entries in a simple text file. I have no problem with creating a Win32 service and creating a log file, but I really don't know how to detect the GUI events.... any ideas?
Thanks a lot!
-- narada
|
|
|
|
|
see MSDN for Hooks . For instance, there
^
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.
|
|
|
|
|
Thanks a lot!
I will look into it.
-- narada
|
|
|
|
|
Hello,
I use a context menu with 2 sub menus as follow:
My Contex Menu>
TheMenu1
TheMenu2
If I click on TheMenu1 I would like the COMMAND message routed to a message handler function within
the class MyTreeCtrl derived from CTreeCtrl
and if I click on TheMenu2 I would like the COMMAND message routed to a message handler function within the class MyDialog class derived from CFileDialog
TheMenu1 works well but TheMenu2 does not.
I use VS 2003 and when I Created the context menu I used the event handler wizard to map Themenu1 and Themenu2 to their respective function and I selected the right class that receives the function. I created the event handler for MyTreeCtrl first.
Message map code is also correct here is the sample
//Class MyTreeCtrl
BEGIN_MESSAGE_MAP(MyTreeCtrl, CTreeCtrl)
ON_COMMAND(ID__NEW_INDICATOR, OnIndicatorIsNew)
END_MESSAGE_MAP()
// Fuctions are below
Bla Bla...
************************************
//Class MyDialog
BEGIN_MESSAGE_MAP(MyDialog ,CFileDialog)
ON_COMMAND(ID__NEW_SYMBOL, OnSymbolIsNew)
END_MESSAGE_MAP()
// Fuctions are below
Bla Bla...
My question is why class MyDialog does not intercept the message?
Also I have noticed that if I delete
ON_COMMAND(ID__NEW_INDICATOR, OnIndicatorIsNew)
and I leave
BEGIN_MESSAGE_MAP(MyTreeCtrl, CTreeCtrl)
//blank
END_MESSAGE_MAP()
everything continues to work well
any idea??
Thnks for your help
|
|
|
|
|
Arris7 wrote: and if I click on TheMenu2 I would like the COMMAND message routed to a message handler function within the class MyDialog class derived from CFileDialog
What do you mean by "if I click on TheMenu2"?
Are you looking to have one context menu for the tree control and another context menu for the dialog it self?
I'd love to help, but unfortunatley I have prior commitments monitoring the length of my grass. :Andrew Bleakley:
|
|
|
|
|
Actually I would like only one contextmenu and two different classes that receive the messages.
Suppose that my contextmenu is like the menu File with two submenu New and Open.
If I click on open I would like that the COMMAND message is handled by the Class A
and when I click on New, the COMMAND message will be handled by the class B.
|
|
|
|
|
Hi All
I want to know that if can we use all API in VC++ 6.0 into VC++.Net.Is it benificial to use VC++.Net for product Developement? Send me your view on this.
Thanks and Regards
M. Atul
M. Atul
|
|
|
|
|
The API is not bound to a compiler/IDE version or another. More important is the Platform SDK in this case.
The main issue can be that a newer compiler is usually much less forgiving with warnings and errors than a previous one. Visual C++ 2005 compiler was absolutely "devastating" compared to Visual C++ 6.0 - after the first rebuild I get maybe 50 times more warnings, and sometimes even errors.
For example, a code like
for(int i = 0; i < 1; i++) {
f(i);
}
for(i = 0; i < 1; i++) {
g(i);
}
works in Visual C++ 6.0, but if you compile in Visual C++ 2005 with "force conformance in for loop scope", the second for statement will complain about undeclared i variable.
But go for it, if you can dedicate time for getting rid of those pesky warnings; expect also some code reworking.
|
|
|
|
|
The real question is do you want to take advantage of .NET?
I personally don't care for the VS 2005 IDE, but the complier is worlds better than VC 6.0 Complier. If you use STL at all it’s worth the upgrade to VS2005 alone.
If you are just doing C++ Development you can use VS2005 without worrying about .NET. Should you decide to move devolvement from VS 6.0 to VS 2005 there where some very important changes made. VS 2005 targets version 8 of the C / MFC run time, this isn’t a huge issue except most computers do not have the updated version of the run time installed. The only way to update the run time versions is to install them. Gone are the days of dropping dependency DLLs of that nature onto the computer, the new paradigm is SAS (Side By Side) DLL Support. This allows many versions of the same DLL to be run on the same box, theoretically eliminating DLL Hell. Additionally, by default all projects are UNICODE now (not generally an issue but it did trip me up for a few minutes).
Good Luck!
-- modified at 5:39 Wednesday 3rd January, 2007
-- modified at 5:40 Wednesday 3rd January, 2007
I'd love to help, but unfortunatley I have prior commitments monitoring the length of my grass. :Andrew Bleakley:
|
|
|
|
|
I'm trying to Localize my application but facing some problem.
Issue:
I'm having Resource's in Resource-Only DLL and this DLL contains String table Icons and Dialogs. I'm able to get the Strings & Icons and able invoke in EXE. But failed to invoke Dialogs.
Please can any one of you help me how to invoke dialogs from Reource-Only DLL in EXE.
Pradeep
|
|
|
|
|
Pradeep.Reddy wrote: But failed to invoke Dialogs.
How you are doing this ?
|
|
|
|
|
I have one MFC application, I removed the resource(.rc file) in the "File View". I created a "Reource-Only DLL" and I added that removed resource(.rc file and resource.h file) here. With Linker option as /NOENTRY.
I have done one small test program and its working fine. But if I implement same in my application I'm getting Error code as 1407 (i.e., "Cannot find window class.") in my application workspace.
If i debug through I will get this error in "hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,pParentWnd->GetSafeHwnd(), AfxDlgProc);" and file path is "..\MFC\SRC\DLGCORE.CPP"
Please can you help me on this...
Pradeep
|
|
|
|
|
Refer localization [^] section of this site.
You will get good idea , how to acheive this.
|
|
|
|
|
Try "AFX_MANAGE_STATE(AfxGetStaticModuleState());" before you call the dialog in the dll
Artificial Intelligence is no match for Natural Stupidity
No one can understand the truth until he drinks of coffee's frothy goodness. ~Sheik Abd-al-Kadir
I can't always be wrong ... or can I?
|
|
|
|
|
Hi,
Even I tried with "AFX_MANAGE_STATE(AfxGetStaticModuleState());".
I have done one small test program and its working fine. But if I implement same in my application I'm getting Error code as 1407 (i.e., "Cannot find window class.") in my application workspace.
If i debug through I will get this error in "hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,pParentWnd->GetSafeHwnd(), AfxDlgProc);" and file path is "..\MFC\SRC\DLGCORE.CPP"
Please can you help me on this...
Pradeep
|
|
|
|
|
If is a MFC dll, make the project MFC extension dll, load the dll normally with LoadLibrary or AfxLoadLibrary, and use it directly.
For example, you may have a dialog implemented in DlgCustom.cpp/.h in DlgCustom.dll but resource is actually in DlgCustomRC.dll.
A possible implementation can be
#include "../DlgCustomRC/resource.h"
class CDlgCustom
{
enum IDD = { IDD_CUSTOM };
protected:
HMODULE m_hRC;
};
CDlgCustom::CDlgCustom()
{
m_hRC = LoadLibrary(_T("DlgCustomRC.dll"));
}
CDlgCustom::~CDlgCustom()
{
FreeLibrary(m_hRC);
}
and instantiation can simply be
void CParentWindow::onCallCustom()
{
CDlgCustom dlg(this);
dlg.DoModal();
}
The DlgCustom.dll will export the class CDlgCustom, that will manage itself the loading of resource-only dll DlgCustomRC.dll.
VERY important is to have resources in all those binaries that do not overlap.
So NO two dialogs with the same ID in the same executable space. I had to write tools that detects and reports such "resource clash" conditions.
If you want to do the job manually, load the library with "load library as data file" since is a resource dll, locate the resource with RT_DIALOG and corresponding IDD, create the DLGTEMPLATE and then use a CreateDialogXXX call. MFC does this - consult the implementation of CreateDialog (I think is in ../mfc/src/dlgcore.cpp).
|
|
|
|
|
Hi,
I have done one small test program and its working fine. But if I implement same in my application I'm getting Error code as 1407 (i.e., "Cannot find window class.") in my application workspace.
If i debug through I will get this error in "hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,pParentWnd->GetSafeHwnd(), AfxDlgProc);" and file path is "..\MFC\SRC\DLGCORE.CPP"
Please can you help me on this...
Pradeep
|
|
|
|
|