|
|
hi,
Thanks for ur reply.I have done that application but i got errors.And other than this i have found no article with a neat description.Can you suggest any other useful article.
Thanks in advance,
Radhika.
|
|
|
|
|
|
The error i got it is,
fatal error C1083: Cannot open include file: 'NewMenu.h': No such file or directory.(in stdAfx.h file)
If i make that particular line as a comment i am getting so many errors like,E:\DownLoads\ownerdrawmenu\ownerdrawmenu.cpp(45) : error C2653: 'CNewMenu' : is not a class or namespace name
E:\DownLoads\ownerdrawmenu\ownerdrawmenu.cpp(45) : error C2065: 'SetMenuDrawMode' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenu.cpp(45) : error C2653: 'CNewMenu' : is not a class or namespace name
E:\DownLoads\ownerdrawmenu\ownerdrawmenu.cpp(45) : error C2065: 'STYLE_XP' : undeclared identifier
ownerdrawmenuDlg.cpp
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(18) : error C2504: 'CNewDialog' : base class undefined
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(41) : error C2614: 'CAboutDlg' : illegal member initialization: 'CNewDialog' is not a base or member
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(48) : error C2248: 'DoDataExchange' : cannot access protected member declared in class 'CWnd'
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2414) : see declaration of 'DoDataExchange'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(48) : error C2352: 'CWnd::DoDataExchange' : illegal call of non-static member function
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2414) : see declaration of 'DoDataExchange'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(53) : error C2653: 'CNewDialog' : is not a class or namespace name
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(64) : error C2614: 'COwnerdrawmenuDlg' : illegal member initialization: 'CNewDialog' is not a base or member
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(74) : error C2653: 'CNewDialog' : is not a class or namespace name
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(80) : error C2653: 'CNewDialog' : is not a class or namespace name
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'ON_WM_InitMenuPopup' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'pMenu' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'nIndex' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'bSysMenu' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2059: syntax error : '{'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2143: syntax error : missing ';' before '{'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2447: missing function header (old-style formal list?)
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2143: syntax error : missing ';' before '}'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(94) : error C2653: 'CNewDialog' : is not a class or namespace name
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(96) : error C2065: 'm_DefaultNewMenu' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(96) : error C2228: left of '.LoadToolBar' must have class/struct/union type
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(130) : error C2039: 'DoModal' : is not a member of 'CAboutDlg'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(17) : see declaration of 'CAboutDlg'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(134) : error C2653: 'CNewDialog' : is not a class or namespace name
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(163) : error C2653: 'CNewDialog' : is not a class or namespace name
Generating Code...
Error executing cl.exe.
ownerdrawmenu.exe - 26 error(s), 0 warning(s)
Thanks,
Radhika.
|
|
|
|
|
all error are related to first error. Locate 'NewMenu.h' and include it appropriately.
|
|
|
|
|
It seems your error "NewMenu.h" did you include this file and path is correct
|
|
|
|
|
Thanks for your suggestion i have gave the path wrong.But again some errors came.The errors came in the places where i have changed of CDialog to CNewDialog and also at the membervariable statement( m_DefaultNewMenu.LoadToolBar(IDR_MAINFRAME);) which is a statement in oninitdialog function.In the code project sample application they didnot gave the type of that member variable.The errors i got are,
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(64) : error C2614: 'COwnerdrawmenuDlg' : illegal member initialization: 'CNewDialog' is not a base or member
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(74) : error C2248: 'DoDataExchange' : cannot access protected member declared in class 'CWnd'
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2414) : see declaration of 'DoDataExchange'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(74) : error C2352: 'CWnd::DoDataExchange' : illegal call of non-static member function
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2414) : see declaration of 'DoDataExchange'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(80) : error C2248: 'messageMap' : cannot access protected member declared in class 'CNewDialog'
e:\downloads\ownerdrawmenu\newmenu.h(896) : see declaration of 'messageMap'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'ON_WM_InitMenuPopup' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'pMenu' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'nIndex' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(85) : error C2065: 'bSysMenu' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2059: syntax error : '{'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2143: syntax error : missing ';' before '{'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2447: missing function header (old-style formal list?)
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(87) : error C2143: syntax error : missing ';' before '}'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(94) : error C2352: 'CNewDialog::OnInitDialog' : illegal call of non-static member function
e:\downloads\ownerdrawmenu\newmenu.h(888) : see declaration of 'OnInitDialog'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(121) : error C2065: 'm_DefaultNewMenu' : undeclared identifier
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(121) : error C2228: left of '.LoadToolBar' must have class/struct/union type
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(135) : error C2248: 'OnSysCommand' : cannot access protected member declared in class 'CWnd'
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2330) : see declaration of 'OnSysCommand'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(135) : error C2352: 'CWnd::OnSysCommand' : illegal call of non-static member function
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2330) : see declaration of 'OnSysCommand'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(164) : error C2248: 'OnPaint' : cannot access protected member declared in class 'CWnd'
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2295) : see declaration of 'OnPaint'
E:\DownLoads\ownerdrawmenu\ownerdrawmenuDlg.cpp(164) : error C2352: 'CWnd::OnPaint' : illegal call of non-static member function
c:\program files\microsoft visual studio\vc98\mfc\include\afxwin.h(2295) : see declaration of 'OnPaint'
Error executing cl.exe.
ownerdrawmenu.exe - 19 error(s), 0 warning(s)
|
|
|
|
|
it seems you have a problem with use this article how do you use this article
|
|
|
|
|
hi,
The steps i have done are,
1.First i have created a dialog based application and added the following statement in the InitInstance function in app class CNewMenu::SetMenuDrawMode(CNewMenu::STYLE_XP);.
2.Next i changed the name of CDialog to CNewDialog where ever it is there.
3.Next i have added the following statement in the dialog class m_DefaultNewMenu.LoadToolBar(IDR_MAINFRAME);.
4.Next i have included New menu.h in stdafx.h and i have added Newmenu.cpp in the project.
5.Next i have added message handler for initial menu pop up function in dlg class header file and added the function code in the source file.
Thanks radhika.
|
|
|
|
|
which methods i have to use in vc++ in order to generate a UDP application
|
|
|
|
|
hi,
In the Wizard of any SDI,Dialog based it ask any support of TCP.
A Check box for TCP/IP support will be supplied in the Wizard. Check that Support.
or Else. Add the "afxsocket.h" Header and "winsock.lib" in the Project Settings of the Linkage Tab of the Property Tab.
which will solve your problem.
Socket s;
s.Create(SOCK_DGRAM); //For UDP.
good luck.
Uday kiran
|
|
|
|
|
In my program I hook the registry query's of another program and instead read them from an INI file. To do this I use the following code:
<br />
LONG __stdcall Mine_RegQueryValueExA(<br />
HKEY hKey,<br />
LPCTSTR lpValueName,<br />
LPDWORD lpReserved,<br />
LPDWORD lpType,<br />
LPBYTE lpData,<br />
LPDWORD lpcbData<br />
)<br />
<br />
{<br />
char * filename = "\\Lapwing.ini";<br />
char buffer[_MAX_PATH];<br />
_getcwd(buffer, _MAX_PATH); <br />
strcat(buffer, filename);<br />
<br />
char ReturnedString [ MAX_PATH + 1 ] ;<br />
unsigned int nSize = MAX_PATH;<br />
GetPrivateProfileStringA("Section" , lpValueName, "\255", ReturnedString, nSize, buffer);<br />
lpData = reinterpret_cast <LPBYTE> (ReturnedString);<br />
LONG rv = ERROR_SUCCESS;<br />
return rv;<br />
<br />
<br />
__try {<br />
rv = Real_RegQueryValueExA (hKey,lpValueName,lpReserved,lpType,lpData,lpcbData);<br />
} __finally {};<br />
<br />
return rv;<br />
}<br />
Now this works really well, the information is read from the file and is converted back into an LPBYTE, however the program never seems to get the information, is there something else I need to do?
|
|
|
|
|
stevelam wrote: GetPrivateProfileStringA("Section" , lpValueName, "\255", ReturnedString, nSize, buffer);
lpData = reinterpret_cast (ReturnedString);
LONG rv = ERROR_SUCCESS;
return rv;
you are returning here. What does block following it does?
|
|
|
|
|
stevelam wrote: ...the program never seems to get the information...
Which means what exactly? What does GetPrivateProfileStringA() return?
"Money talks. When my money starts to talk, I get a bill to shut it up." - Frank
"Judge not by the eye but by the heart." - Native American Proverb
|
|
|
|
|
It means the program read the values hat I want from the INI file correctly but the seems to be no way to return them to the app that I am hooking into.
|
|
|
|
|
Hello,
I am working an a SDI MFC application and I don't know what is realy what is the best to do when I will close the application
AfxGetApp()->m_pMainWnd->PostMessage(WM_CLOSE,0,0);
or
exit(0);
Thank you !
AutreChien
|
|
|
|
|
hi,
Use ::PostQuitMessage(0) for SDI or MDI.
::OnOK() for a Dialog.
Good Luck.
Uday kiran
|
|
|
|
|
|
I am learning Win32API programming. I do not use MFC. Now I have created a class which creates a Window of the Static class. Lets call the class CStatic . This class creates a Static Window and has all the functionalities that a normal Static control has. My problem begins when I use the class.
As long as I use the class like CStatic m_Static there is no problem but when I create an instance of the class using CStatic* m_pStatic = new CStatic() , I start running into confusions. Isn't it necessary to use delete m_pStatic to remove the object from memory or will m_pStatic->DestroyWindow() do the same thing?
When I try
m_pStatic->DestroyWindow()
delete m_pStatic
I get an error? Does the object get removed if I simply use the DestroyWindow() function? The DestroyWindow() function in turn just calls the WIN32API DestroyWindow() .
From what I reason, CStatic* m_pStatic = new CStatic() creates an object of CStatic in memory and m_pStatic->Create() in turn creates another object for the Window. So I have two objects in memory, one of my class and one belonging to the Window. Am I right? or is my whole concept wrong? If I am correct then a call to DestroyWindow should only delete the Window object and not the object of my class. Isn't it? Then now come when I try to delete m_pStatic after a call to Destroywindow , it throws an exception.
Can anyone explain.
---
Hakuna-Matada
It means no worries for the rest of your days...
It's our problem free, Philosophy
<marquee behavior="alternate" scrollamount="5" scrolldelay="50">
|
|
|
|
|
Hakuna-Matada wrote: From what I reason, CStatic* m_pStatic = new CStatic() creates an object of CStatic in memory and m_pStatic->Create() in turn creates another object for the Window. So I have two objects in memory, one of my class and one belonging to the Window. Am I right?
Yes more or less. In fact, the call to the WINAPI Create function doesn't really 'create' an object in memory like you would do with new. But still, you have to call DestroyWindow afterwards. And then of course delete the object you allocated with new.
Hakuna-Matada wrote: Then now come when I try to delete m_pStatic after a call to Destroywindow, it throws an exception.
You probably did something wrong in your code. Show the destructot of your class. And explain also exactly what you did. It is impossible to say without having more information.
|
|
|
|
|
Thanks for your input. It was indeed a flaw in my code. But I have another situation now.
CStatic* m_pStatic = new CStatic();<br />
m_pStatic->Create();
Lets say I register for the CStatic Window's Close Event. Now when the Window is closed by clicking on the close button, when do I delete m_pStatic ?
---
Hakuna-Matada
It means no worries for the rest of your days...
It's our problem free, Philosophy
<marquee behavior="alternate" scrollamount="5" scrolldelay="50">
|
|
|
|
|
As I can see by your code, m_pStatic is not a member of any class and its scope is probably limited to the function where it has been declared. Am I right or is your code different ?
In that case, you will lose track of your pointer and won't be able to delete it anymore (resulting in a memory leak).
I have some suggestions:
1) first, instead of forcing the user to call DestroyWindow from your control, why don't you simply put it in the destructor of your class ? So like that it will be called automatically when your class is destroyed.
2) try to avoid using dynamic allocation when it is not necessary (like in this case, you don't really need to allocate the control dynamically, I am right ?)
3) make all your controls member of the class in which they are used. This way, they will be destroyed when the parent class is destroyed and you don't need to have some headache because they are going out of scope whe nyou don't want (remember that when it goes out of scope, the object is destroyed and so its destructor is also called).
Hope this helps
|
|
|
|
|
Hi Guys,
Can anyone plz help me by giving some source code for sample CMap applications. It will be very useful for me.
Regards
Velayudhan
Thanks in Advance
Velayudhan
|
|
|
|
|
Do you mean samples using CMap ? I recommend using std::map instead. I know there are plenty of samples for that on the web and IMO, the public interface makes a lot more sense than CMap does.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
hi,
CMap is used for (Key Name --> Key Values). // It is MFC Class.
Please Study the MSDN which gives a Neat explation and how to use.
// In order to Use STL class.
use std::map(...) // which is complicated. First Approach is MFC.
Go to Google and search CMap you will get number of Examples.
Uday kiran
|
|
|
|