|
Compiler and libraries
VC6, MFC
Intro
I have a SDI app that swaps out two views depending on user input. One of these is a CSrollView. The view displays an unknown number of lines and it's very likely that I'll have enough content to have vertical scroll bars. For testing, I purposely drew enough lines to make the content long enough to show a vertical scrollbar.
Observations
When the view is initially displayed, the expected content is drawn (all of the content is text) correctly, and the vertical scrollbar shows up as expected.
When I try to scroll the view, the display becomes corrupted, text partially drawn, text overlapping, etc.
It doesn't matter if I click the thumb controller, a scrollbar arrow, or the scrollbar itself. The display always becomes corrupted as decsribed above.
What I've Done
I've made sure SetScrollSizes is called in OnInitialUpdate.
I also call SetScrollSizes at the end of the drawing function to account for the actual number of lines I'm displaying. The scrollbars update accordingly.
Result
I'm at a complete loss as to what I'm doing wrong (and I just know this is going to be a forehead slapper). Does anyone have any ideas?
[EDIT] It was a forehead slapper. problem solved.
------- sig starts
"I've heard some drivers saying, 'We're going too fast here...'. If you're not here to race, go the hell home - don't come here and grumble about going too fast. Why don't you tie a kerosene rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
-- modified at 10:17 Wednesday 8th February, 2006
|
|
|
|
|
I have drawn graph in OnDraw function,i got the graph..but when i minimized the window and getting back the position..it shows assertion error..What is tht?
How cud i get rid of tht?
|
|
|
|
|
Perhaps you can provide us with the code of the OnDraw function?
Er zit een korstje op mijn aars.
|
|
|
|
|
void CLineView::OnDraw(CDC* pDC)
{
//CLineDoc* pDoc = GetDocument();
//ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
GetClientRect(&rect);
pDC->FillRect((LPCRECT)rect,&CBrush(RGB(0,0,0)));
CPoint PtLine[] = { CPoint( 100, 20), CPoint(100, 420),
CPoint(700, 420) };
pDC->SelectStockObject(WHITE_PEN);
pDC->SetBkColor(RGB(0,0,0));
pDC->SetTextColor(RGB(19,133,255));
pDC->MoveTo(PtLine[0]);
pDC->LineTo(PtLine[1]);
pDC->LineTo(PtLine[2]);
int x1=160,y1=420,x2=100,y2=60;
for(int i = 0;i<9;i++)
{
pDC->MoveTo(x1,y1);
pDC->LineTo(x1,y1+5);
x1=x1+60;
pDC->MoveTo(x2,y2);
pDC->LineTo(x2-5,y2);
y2=y2+40;
}
gpen1.CreatePen(PS_SOLID,2,RGB(255,0,0));
pDC->SelectObject(&gpen1);
for(int j= 0;j<8;j++)
{
pDC->SetPixel(a[j]+100,420-b[j],RGB(0,255,0));
pDC->MoveTo(a[j]+100,420-b[j]);
pDC->LineTo(a[j+1]+100,420-b[j+1]);
}
pDC->TextOut(650,450,"X-AXIS");
pDC->TextOut(45,25,"Y-AXIS");
}
|
|
|
|
|
Anu_Bala wrote: gpen1.CreatePen(PS_SOLID,2,RGB(255,0,0));
pDC->SelectObject(&gpen1);
First when ever you use SelectObject don't forget to Select back the old object e.g
CPen NewPen;
CPen* pOldPen;
NewPen.CreatePen((PS_SOLID,2,RGB(255,0,0));
pOldPen = pDC->SelectObject(&NewPen);
:
:Draw the rest....
:
// After Drawing
pDC->SelectObject(pOldPen);
Anu_Bala wrote: for(int j= 0;j<8;j++)
{
pDC->SetPixel(a[j]+100,420-b[j],RGB(0,255,0));
pDC->MoveTo(a[j]+100,420-b[j]);
pDC->LineTo(a[j+1]+100,420-b[j+1]);
}
Second .. I think you might have problem in data of array a[] and b[] which may cause assertion. Where they are changing plz check.
Regards
Anil
|
|
|
|
|
Try to debug and find where exactly is the assertion is?
After minimizin place the break point in OnDraw and then maximize and debug.
|
|
|
|
|
hi all
how can i get a value from the registery in an MFC application ?...
i want to retreive the DSN in an ODBC registry value dinamically, how can i get this value form the registery...
thanks.
|
|
|
|
|
RegQueryValueEx(...)
Owner drawn
Jesus Loves
|
|
|
|
|
essa1981 wrote: how can i get a value from the registery in an MFC application ?..
try CRegKey wrapper class
"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
|
|
|
|
|
Any one please help me to solve this problem
In my code I want to check whether my system is connected to lan or not
for that I used IsNetworkAlive and IsDestinationReachable . The thing is all the time the functions are returning true.ie if the network cable unpluged also it returns true.
please sugest an alternative method.
Thanks
Aby
|
|
|
|
|
you can use the API NetServerEnum() to check other machines in the network if it return other than NERR_Success then network not connected else connected.
|
|
|
|
|
Aby Skaria wrote: please sugest an alternative method.
Will GetAdaptersInfo() work?
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
Thanks
NetServerEnum() is working fine
Thanks a lot
|
|
|
|
|
How are you using NetServerEnum() to "check whether my system is connected to lan or not?"
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
void CNetWorkTryDlg::CheckNetworkStatus()
{
while (true)
{
LPSERVER_INFO_101 pBuf = NULL;
LPSERVER_INFO_101 pTmpBuf;
DWORD dwLevel = 101;
DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
DWORD dwTotalCount = 0;
DWORD dwServerType = SV_TYPE_SERVER; // all servers
DWORD dwResumeHandle = 0;
NET_API_STATUS nStatus;
LPCWSTR pszServerName = NULL;
DWORD i;
// Call the NetServerEnum function to retrieve information
// for all servers, specifying information level 101.
//
nStatus = NetServerEnum(pszServerName,
dwLevel,
(LPBYTE *) &pBuf,
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries,
dwServerType,
NULL,
&dwResumeHandle);
//
// If the call succeeds,
//
if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA))
{
if ((pTmpBuf = pBuf) != NULL)
{
m_Status.SetWindowText("Network connected");
}
else
{
m_Status.SetWindowText("Network disconnected");
}
}
else
{
m_Status.SetWindowText("Network disconnected");
}
//
// Free the allocated buffer.
//
if (pBuf != NULL)
NetApiBufferFree(pBuf);
Sleep(2000);
}
}
|
|
|
|
|
If I work on a non-XP environment, I can make a group box disable. Can anyone help me out to do the same thing in XP?
BabuZaleela
|
|
|
|
|
AFAIK, you can't do this with XP styles, the disabled group box looks just like the enabled one.
- Dy
|
|
|
|
|
Hi,
I have created a dialog based application in MFC, I have a button and I would move it togheter with the border when i resize the window, how can i do?
Leti
|
|
|
|
|
Use MoveWindow(...) or SetWindowPos(..) on OnSize method of the window.
|
|
|
|
|
Easiest way is to use ResizableDialog[^]
You just need to define which buttons should snap to which edges of your window, and it handles the rest for you
--
Help me! I'm turning into a grapefruit!
Buzzwords!
|
|
|
|
|
See the Extras section of this article.
"The greatest good you can do for another is not just to share your riches but to reveal to him his own." - Benjamin Disraeli
|
|
|
|
|
I have created a menu in win32 api.In that menu i have inserted "Word","excel" like menus.In that when i clicked word it opens word document,in word i enter a some text and when i am going to save the document it should save only in particular folder only .How it can be possible.Give me some idea to do me.
|
|
|
|
|
Put the address of the folder in which you want to save your documents into the registry (at the time of opening the document).These changes will be made to the registry entry of Word.Now when you ask word to save a file it would automatically read the same path always.
You will have to search where word stores these registry values
Give it a Try at this and if you have some problem get back to me.
Wishes.
Anshuman Dandekar
Dare to Dream,
Care to Achieve.............
-- modified at 7:24 Wednesday 8th February, 2006
|
|
|
|
|
That ok sir using win32 api is any function to control the operation.If i use that in my application it will affect the actual word operation or not.
|
|
|
|
|
Search MSDN for
GetOpenFileName / GetSaveFileName function .
Wishes.
Anshuman Dandekar
Dare to Dream,
Care to Achieve.............
|
|
|
|
|