|
Can you more explain,please?
|
|
|
|
|
Ya, You can draw in any area of you application using device context. You can also restrict the area of drawing.
Have a look over:
CPaintDC, CClientDC, CMetaFileDC and CDC.
Well, everything depends on where and in which kind of application you want to draw. Try to be specific what exactly you want.
|
|
|
|
|
vikramkarthik wrote: Is there any possibilty to create drawing area in VC++?
what type of drawing area are you looking for!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief
|
|
|
|
|
Hello,
I am porting an application form VC++ 6.0 to VC++ 2005. While building my application its showing error "Can't open .sbr file, no such file or directory". Can any body help me in this problem.
regards,
Yudhisthira
|
|
|
|
|
Try to rebuild the entire solution.
Regards,
Paresh.
|
|
|
|
|
Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
Regards,
Yudhisthira
|
|
|
|
|
Check compiler options:
Please refer here[^] for more information.
Regards,
Paresh.
|
|
|
|
|
Clean the build and rebuild it. sbr file is a source browser file needed to have the enlisting of the constituents of the build.
There are only two kinds of people who are really fascinating-people who know absolutely everything, and people who know absolutely nothing.
Oscar Wilde (1854-1900)
Regards...
Shouvik
|
|
|
|
|
Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
Regards,
Yudhisthira
|
|
|
|
|
yudhisthira wrote: I am porting an application form VC++ 6.0 to VC++ 2005. While building my application its showing error "Can't open .sbr file, no such file or directory". Can any body help me in this problem.
Clean the Solution and then perform build!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief
|
|
|
|
|
Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
Regards,
Yudhisthira
|
|
|
|
|
yudhisthira wrote: Hello,
I did clean and build so many times but same error is coming. Is there any other solution pls let me know.
are your .sln and other file readonly ? if yes/no delete release folder,debug folder and .clw,.ncb.aps files!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief
|
|
|
|
|
Here's a problem with static class member:
From DLL A - header:
<br />
class __declspec(dllexport) CLogEntry<br />
{<br />
public:<br />
...<br />
<br />
static CLog* GetSingletonLoggingProvider() { return s_pSingletonLoggingProvider; }<br />
...<br />
<br />
protected:<br />
...<br />
static CLog * s_pSingletonLoggingProvider;<br />
};<br />
.cpp file:
#include "stdafx.h"<br />
<br />
#include "LogEntry.h"<br />
<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL; << NOTE I need to actually "define" the global variable - that's fine. (so long I don't need to do it multiple times)<br />
<br />
CLogEntry::CLogEntry(int nId, nsCLog::eSeverity nSeverity, char* lpszCode, char* lpszMsg, DWORD dwWin32ErrorCode, CLogEntry * pParent)<br />
{<br />
...<br />
}<br />
... the rest of it...<br />
Now from DLL B (The second dll which is linked to "DLL A")
.cpp file (where CLogEntry is used)
<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL; <br />
<< I need to define this again?? That looks like redundant code to me but if I don't, I'd get the following error.
<br />
Linking...<br />
Creating library ..\..\bin/XXX.lib and object ..\..\bin/XXX.exp<br />
StdAfx.obj : error LNK2001: unresolved external symbol "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A)<br />
..\..\bin/XXX.exe : fatal error LNK1120: 1 unresolved externals
So I need to redefine (not "declare") the static member variable in each "Translation Unit"? (separate dll, exe?)
Thanks a bunch!
|
|
|
|
|
You can do something like this:
<font size="3">
<font color="Red">#ifdef _BUILDINGDLL
#define _MY_IMPORTEXPORT __declspec(dllexport);
#else
#define _MY_IMPORTEXPORT __declspec(dllimport);
#endif</font>
class <font color="Red">_MY_IMPORTEXPORT</font> CLogEntry
{
public:
...
static CLog* GetSingletonLoggingProvider() { return s_pSingletonLoggingProvider; }
...
protected:
...
static CLog * s_pSingletonLoggingProvider;
};
<font size="3">
#include "stdafx.h"
#include "LogEntry.h"
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL;
CLogEntry::CLogEntry(int nId, nsCLog::eSeverity nSeverity, char* lpszCode, char* lpszMsg, DWORD dwWin32ErrorCode, CLogEntry * pParent)
{
...
}
... the rest of it... Define _BUILDINGDLL (in the compiler preprocessor settings) when building DLL A.
Don't define it when building DLL B
Do NOT redefine s_pSingletonLoggingProvider in DLL B.
Instead use like any other static members (they are imported for external builds, exported when building DLL A):
CLog *pLog = CLogEntry::GetSingletonLoggingProvider();
Make sense?
Mark
Last modified: 2hrs 51mins after originally posted --
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thanks but if I don't guard
<br />
...<br />
class __declspec(dllexport) CLogEntry<br />
{<br />
public:<br />
...<br />
static CLog* GetSingletonLoggingProvider() { return s_pSingletonLoggingProvider; }<br />
<br />
...<br />
<br />
protected:<br />
...<br />
protected:<br />
...<br />
<br />
static CLog * s_pSingletonLoggingProvider;<br />
};<br />
<br />
<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL;<br />
#endif<br />
with #ifndef:
<br />
#ifndef _LOGSINGLETON_<br />
#define _LOGSINGLETON_<br />
CLog * CLogEntry::s_pSingletonLoggingProvider = NULL;<br />
then I'd get:
<br />
Linking...<br />
StartupManager.obj : error LNK2005: "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A) already defined in LogEntry.obj<br />
StartupManager.obj : error LNK2005: "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A) already defined in LogEntry.obj<br />
StartupManager.obj : warning LNK4006: "protected: static class CLog * CLogEntry::s_pSingletonLoggingProvider" (?s_pSingletonLoggingProvider@CLogEntry@@1PAVCLog@@A) already defined in LogEntry.obj; second definition ignored<br />
Creating library ..\bin\Utilities.lib and object ..\bin\Utilities.exp<br />
..\bin\Utilities.dll : fatal error LNK1169: one or more multiply defined symbols found<br />
Error executing link.exe.<br />
Should I just include it in ".cpp" instead?
|
|
|
|
|
That should have stayed in the CPP, yes. I'll hilight the sample code - I only added the stuff at the top.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Thanks very much this is execellent
There're a couple of things I do not understand however.
1. I understand "__declspec(dllexport)", but not sure why we need "__declspec(dllimport)"
2. I do understand precompile directive however:
<br />
#ifdef _BUILDINGDLL<br />
...<br />
#else<br />
...<br />
#endif<br />
Just not sure why when "Building DLL B" I need to "dllimport" (although I saw it in MSDN)... I don't remember I need to dllimport... just link in project settings and include header file was all I did.
|
|
|
|
|
For a true global variable/function you need ONE instance of it.
In your case it was in DLL A.
For other modules to be able to use the globals, you need to export it from
the DLL it exists in and import it in any module that uses it.
By using the preprocessor directives, you can keep the declaration in one header file
instead of two (one for export, one for import). Any changes to the class only have to
be made in one place.
This is how MFC is built, except there's a 3rd option, since MFC can also be built into a
static library.
By the way, you can also import/export individual static members of a class instead of
importing/exporting the entire class. Same method except you put the __declspec()
on the variable declaration instead of the class declaration.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Also, I already have the following by ClassWizard when setup the new project:
#ifdef UTILITIES_EXPORTS<br />
#define UTILITIES_API __declspec(dllexport)<br />
#else<br />
#define UTILITIES_API __declspec(dllimport)<br />
#endif<br />
Do I need to do this again for individual class?
devy
|
|
|
|
|
devvvy wrote: Do I need to do this again for individual class?
You can use the same UTILITIES_API macro on a class.
The point is to only export from one module, the module where the actual
static instance(s) exist. All other modules should import.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Thanks very much Mark, I been very needy
|
|
|
|
|
You're welcome!
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
int* pInt = new int[2*3]; 6 elements
So you can access it like pInt[0],1,2,..
now i want to acess it as a 2dim.
for example,
0 1
2 3
4 5
Or
0 1 2
3 4 5
i have declared a pointer like int (*pintPtr)[2][3];
Now how do I assign this to pInt?
something like ,
pintPtr=((int*)[2][3])&pInt;?
This do not work. Please help.
----------------------------
286? WOWW!
|
|
|
|
|
void main()
{
int (*p)[3] = new int[2][3];
int i, j;
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
p[i][j] = i +j;
}
printf("\n");
}
int (*pX)[3] = p;
for(i = 0; i < 2; i++) {
for(j = 0; j < 3; j++) {
printf("%d ", pX[i][j]);
}
printf("\n");
}
printf("\n");
for(i = 0; i < 2; i++, pX++) {
for(j = 0; j < 3; j++) {
printf("%d ", (*pX)[j]);
}
printf("\n");
}
delete [] p;
}
Maxwell Chen
|
|
|
|
|
Dear All
I want to write one DLL. for this purpose, I add one static library to project.
When I compile the program I get following link error.
INK : fatal error LNK1104: cannot open file "nafxcwd.lib"
Error executing link.exe.
But when I add the path of nafxcwd.lib to my lib file paths I get 716 errors.
Do you know how I can remove this problem.
Regards
Monhi
|
|
|
|