|
How are you handling the OnEraseBkgnd message?
I would recommend something like this:
BOOL CYourDialog::OnEraseBkgnd(CDC* pDC)
{
static int controlsNotToBeErased[] =
{
IDC_REFINE_BUTTON,
IDC_SCRIPT,
IDC_AUTOCLIP,
IDC_CLIP,
IDC_REFINE_CONFIG,
IDC_SCRIPT_SETUP,
IDC_SUPPRESS_CO2,
IDC_SUPRESS_WATER_CAPACITY,
IDC_SET_COMBO,
IDC_REFINE,
IDC_GRAPHS,
IDC_REFINEGRAPH,
IDC_CO2CHECK,
IDC_CO2,
IDC_SOLUBILITYCHECK,
IDC_SOLUBILITY,
IDC_VOLATILITYCHECK,
IDC_VOLATILITY,
IDC_GLPKA
};
CRect clip;
pDC->SaveDC();
for (int i = 0; i < sizeof(controlsNotToBeErased) / sizeof(int); i++)
{
CWnd *pWnd = GetDlgItem(controlsNotToBeErased[i]);
if (pWnd && pWnd->IsWindowVisible())
{
pWnd->GetWindowRect(&clip);
ScreenToClient(&clip);
pDC->ExcludeClipRect(&clip);
}
}
pDC->GetClipBox(&clip);
pDC->FillSolidRect(clip, GetSysColor(COLOR_BTNFACE));
pDC->RestoreDC(-1);
return FALSE;
}
This should hopefully reduce contro flicker etc.
If you vote me down, my score will only get lower
|
|
|
|
|
The problem is all of the painting that's going on as you move each control. Try looking at the DeferWindowPos [^] API function, which lets you change the position of several windows and then update the screen all at once.
Software Zen: delete this;
|
|
|
|
|
thanks for the fast replies, i will try your suggestions
|
|
|
|
|
Hi all!
I created a file DLL by VC++.After that to insert in VisualBasic I do following:
From Menu choose Project->Reference...-> Browse to file *.DLL (Adsoft.DLL)
Choose in ComboList (Prọect/Library)->Adsoft
But any class and function in there don't to appear.
If possible. Can you give me an example ?
Thank !
|
|
|
|
|
Thangnc wrote:
But any class and function in there don't to appear.
Have they been exported?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
Thanks DavidCrow!
I don't think your ? I write this class following:
// Adsoft.H
#ifdef ADSOFT_IMPL
#define CLASS_DECL_ADSOFT _declspec(dllexport)
#else
#define CLASS_DECL_ADSOFT _declspec(dllimport)
#endif
#undef AFX_DATA
#define AFX_DATA CLASS_DECL_ADSOFT
class AdsoftDLL : public CSocket
{
public:
BOOL CGetCheckErro(int nErroCode);
};
#undef AFX_DATA
#define AFX_DATA
// Adsoft.cpp
#include "afxdllx.h"
#include "Adsoft.h"
BOOL CGetCheckErro(int nErroCode)
{
if (nErroCode==0)
return FALSE;
return TRUE;
}
But to happen phenomenon don't to want
|
|
|
|
|
I'm really not sure what you've provided here. Is this code that does not work? Are you wanting to export the AdsoftDLL class or just the CGetCheckErro() method? After a successful compile/link, have you verified with either Dependency Walker or Dumpbin that the DLL has the correct export table?
Thangnc wrote:
BOOL CGetCheckErro(int nErroCode)
In adsoft.cpp, shouldn't this be:
BOOL AdsoftDLL::CGetCheckErro(int nErroCode)
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
//Hi all,Thank you for helping me!
LPBYTE CString_To_LPBYTE(CString str)
{
LPBYTE lpb=new BYTE[str.GetLength()+1];
for(int i=0; ibr>lpb[str.GetLength()]=0; //????
//How can I code this line?<for....>
return lpb;
}
|
|
|
|
|
try this function :str.GetBuffer(0)
路漫漫其修远兮,吾将上下而求索。
|
|
|
|
|
Try:
for (int i = 0; i < str.GetLength(); i++
lpb[i] = str[i];
lpb[i] = '\0'; or:
_tcscpy(lpb, str);
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
Hi,
Do not use _tcscpy() function, because CString is a class, it doesn't mean it is allocating one extra byte for '\0' NULL character to say end of string.
And also avoid lengthly for loop while causes poor performance..
Use this method..
LPBYTE CString_To_LPBYTE(CString str)
{
LPBYTE lpb= NULL;
int nLength = str.GetLength();
if (nLength > 0)
{
// If you need space for NULL allocate one more. otherwise don't
lpb = new BYTE[(nLength + 1) * sizeof(TCHAR)];
memcpy(lpb,str.GetBuffer(0),(nLength) * sizeof(TCHAR));
lpb[nLength * sizeof(TCHAR)] = 0; // only if you need NULL at end
}
return lpb;
}
" Action without vision is only passing time,
Vision without action is merely day dreaming,
But vision with action can change the world "
- Words from Nelson Mandela
Thanks & Regards,
Gopalakrishnan
|
|
|
|
|
S.Gopalakrishnan wrote:
_tcscpy() function, because CString is a class, it doesn't mean it is allocating one extra byte for '\0' NULL
_tcscpy does copy the terminator, since the CString argument's LPCTSTR conversion operator is guaranteed to create one.
Software Zen: delete this;
|
|
|
|
|
Thank you so much everyone! but there is still problems!
I used Mr S.Gopalakrishnan's method but there is
Linking error:
System.obj : error LNK2001: unresolved external symbol "public: unsigned char * __thiscall System::CString_To_LPBYTE(class CString)" (?CString_To_LPBYTE@System@@QAEPAEVCString@@@Z)
Debug/ex_ShutdownWindows.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
How can I resove it? Thank you!
|
|
|
|
|
is there any possibility to use this macro in Visual C++ .NET. I have tryed everything but compiler simply doesn't recognize the macro.
CRPG, FRPG, Oblivion Fan
Hater of Counter Strike ( i hate it soo much damn it );
|
|
|
|
|
If the predefined macro doesn't work, you can always write your own.
#define TRACE(x) (System::Diagnostics::Debug::WriteLine(x))
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
cpprules wrote:
I have tryed everything but compiler simply doesn't recognize the macro.
Isn't it still in afx.h ?
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
Can anyone help me? I'm having a bugger of a timetrying to figure out how to get rid of my memory leaks. This following functionality is in my Doc class. The SrcDirImages is a CStringList declared in the header file so it will be global to the class, and I can use it elsewhere in other methods.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int CPortfolioOrgDoc::buildImageList( CString SrcDir )
{
CFileFind filefinder;
SrcDirImages.RemoveAll();
if( !SetCurrentDirectory( SrcDir ) )
return 0;
// loop through current directory and get names of image files to list.
if( filefinder.FindFile( "*.jpg" ) )
{ // stupid filefinder returns 0 when it's on the last one.
while( filefinder.FindNextFile() )
{
SrcDirImages.AddTail( filefinder.GetFileName() );
}
// eg. must do action again after exiting loop...
SrcDirImages.AddTail( filefinder.GetFileName() );
filefinder.Close(); //clean up.
}
return SrcDirImages.GetCount();
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Each time I execute this method, it leaves all the CString data pointers from the CFileFind hanging around in memory. I can't figure out how to get rid of them...
|
|
|
|
|
They should be in memory, till you call RemoveAll, shouldn't they?
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
They stay there after I call RemoveAll(), (which I do again in the destructor). If I call this method numerous times, I get piles and piles of loose strings in memory...
|
|
|
|
|
The buildImageList() function looks unnecessarily complicated. How about:
int CPortfolioOrgDoc::buildImageList( CString SrcDir )
{
CFileFind filefinder;
SrcDirImages.RemoveAll();
BOOL bFound = filefinder.FindFile(SrcDir + "\\*.jpg");
while (bFound)
{
bFound = filefinder.FindNextFile();
SrcDirImages.AddTail(filefinder.GetFileName();
}
return SrcDirImages.GetCount();
}
"One must learn from the bite of the fire to leave it alone." - Native American Proverb
|
|
|
|
|
Hi,
Iam writing some piece of texts into a moncochrome bitmap & then then copying it to the destination Dc by using a "BitBlt" function.
Now when I perform some zooming,in the text,write to the bitmap & then read it back to the destination Dc,the Pixels are not scaled with good quality.
Is there any Win32 ApI functions available,so that I can do some resampling of the image(text) stored in the bitmap , before writing it back.(Don't want to resize the bitmap size,know that there is a "StretchBlt function for that",but want to scale Pixels).
Will it work if I increase the bitmap resolution,there by increasing the pixels & there by quality.
If so how can I change a bitmap resolution
Thanks...
|
|
|
|
|
Look for the CxImage article here on CodeProject. It does decent scaling.
--
An eye for an eye will only make the world blind.
|
|
|
|
|
How can I show text in arabic and hebrow languages, in my window, whitout Unicode. in ANSI mode and notifying Windows to use associated character set for each language?
also, what is the benefit of SetThreadLocale and similar functions? which one of them can solve my problem?
|
|
|
|
|
I am not prettey sure about the arabic language whether it is single byte or MBCS. To show your arabic and hebrow languages in your window, you have to use proper font and char set.
Install or findout a suitable font which support the arabic or hebrow languages and use the arabic or hebrow charset when creating a font. This will resolve your display problem.. But more over operating system also considerable...
SetThreadLocale () gives you support at API level.. Suppose your system deals with date, time, currency etc, you MUST set your locale so that windows API will do proper handling. Otherwise they do default implementation...
" Action without vision is only passing time,
Vision without action is merely day dreaming,
But vision with action can change the world "
- Words from Nelson Mandela
Thanks & Regards,
Gopalakrishnan
|
|
|
|
|
I Create a CRebarCtrl in a Dialog by Create method,and call ShowWindow()method to show it,Bu when I Run it,I Can't See the CRebarCtrl,So I Call ::GetWindowRect(),found the top = bottom ,Who Can tell me What's the matter?Thanks
|
|
|
|