|
|
Use UpdateWindow immediately after ShowWindow function which force it to Update its contents.
|
|
|
|
|
Thank u all for replyin
this is what i do.....in paint
CRect rect(10,10,200,200);
this->GetClientRect(&rect);
CPaintDC dc(this);
dc.FillRect(&rect,new CBrush(RGB(255,0,255)));
dc.Rectangle(rect.Width()/2,rect.Height()/2,100,100);
i dnt process WM_SIZE or WM_ERASEBKGND
if WM_SIZE repaints whole client area, why is it not filling the rect coz of which the previous content is displayed... am i correct??
Thanx'n'advnance
|
|
|
|
|
Code is doing exactly what it should do.. what do you want to do buddy ??
|
|
|
|
|
ok
I want to display a rectangle at the middle of dialog box.
for that i
. first fills my whole client area with a particular color
. then i draw a rectangle at the middle of ma client area.
. Now when i maximize my window i get two rectangle's. one at top left and
other at middle.
. so i just want to know why am i gettin the top left rectangle when i maximize.
Hope u got it... may be i am wrong , if wrong please help me...
Thanx'n'advance
|
|
|
|
|
The problem is what I said before. Dialog will not have CS_VREDRAW or CS_HREDRAW styles. So you have to call Invalidate( FALSE ) in the OnSize(). It will solve the issue.
Please note:
arshadkc wrote: dc.FillRect(&rect,new CBrush(RGB(255,0,255)));
This is wrong. The objects will not be deleted.
You can use FillSolidRect for simple fills.
- NS -
|
|
|
|
|
ya i have done it. its working fine. thank u
but what my doubt is if its not calling OnPaint then how whole client area
is filled (ie dc.FillRect(&rect,new CBrush(RGB(255,0,255))???
and thanx for FillSolidRect.
|
|
|
|
|
it getting filled because u have given entire client area as parameter "&rect" which u had retried with GetClientRect() and then you r drawing a rectangle with default WHITE brush so it drawn as white box. WM_SIZE always repaints entire window. if u want only middle rectangle to filled use dc.SelectObject(new Brush) function and then dc.Rectangle() function which will draw rectangle with selected brush.
|
|
|
|
|
It is true that the window is not painted while resizing.
But it will be painted in all other scenarios. That is at the time of creation, when some window moves over it, etc.
Hope you got the idea.
And I found that your code for drawing a rectangle in the centre of the window is not fine.
You may have to update it as,
CPaintDC dc( this );
CRect rect;
GetClientRect( &rect );
dc.FillSolidRect( &rect, RGB( 255, 0, 255 ));
const int nWidth = 100;
const int nHeight = 100;
int nX1 = ( rect.Width() - nWidth ) / 2;
int nY1 = ( rect.Height() - nHeight ) / 2;
dc.Rectangle( nX1, nY1, nX1 + nWidth, nY1 + nHeight );
- NS -
|
|
|
|
|
Actually i am just trying out some Device context functions. i just want to place
a rectangle somewhere middle. anyways thanx for placing it exactly.
But stil i didnt get whats happening.
I feel that a call is made to OnPaint after OnSize thats why its painting
whole client area. According to me after i paint my whole client area i should
not see any previous content. But here its not happening like that.??
Can anyone clear my doubt??
|
|
|
|
|
i don't understand which previous content u r seeing ?? all is new after resize of window.
|
|
|
|
|
ya exactly thats what i want , everything should be new...
this is what happening
. I display a rect(i ll name it "rectA") at center of dialog.
. when i maximize the dialog. i get two rectangle's. One is my previous one
(ie "rectA") at the top left and the other one is at the center.
. what i expect is only one rectangle at center. i dont want "rectA" to be displayed again when i maximize because everything should be cleared.
|
|
|
|
|
That is because entire area is not re-painted. As I mentioned earlier, if the window class does not have the styles (CS_HREDRAW and CS_VREDRAW), the painting will not occur when the window is resized. That's the problem happened to you. For a dialog window, these styles will not be there. So you have to call Invalidate() from the OnSize.
- NS -
|
|
|
|
|
in my program i'm creating an scintilla based editor...
i can display the calltips...
but if anyone knows the logic of displaying the variables types in calltips such that...
if i keep mouse on a variable 'i' which is an integer...,in calltip it should show "int i"...
how to implement this?any help thanx n advance...
|
|
|
|
|
Simple tooltip[^]
Advanced Tooltip[^]
To know how plot it you have to know what the mouse is pointing!
To do this you can plot the text storing the border of any useful word displayed and test if the mouse position is on it (if yes then plot the tooltip).
nother way is create a custom class that display a single word of the text, it can bes mouse sensitive and you can display its tooltip (if needed).
Russell
|
|
|
|
|
i didn't understand clearly the meaning of "plot the text storing the border of any useful word "...that is how to
store the border of text...first how 'll get the text over which the mouse is pointing...
since i'm totally confused cud u explain me somewhat eloborately if possible with an example code of 4 or 5 lines....
thanx 4 ur reply...
|
|
|
|
|
When you draw the text on your DC you can use CDC::GetTextExtent(...) /CDC::GetOutputTextExtent(...) to know the size of the label [heigh and width].
Of course, to do this you have to draw yourself the text on the screen, so you have to create a derived class of CView.
In this way it will be very simple also to color the words with different colors: I think that this can be useful to your project.
Russell
|
|
|
|
|
|
i think i didn't explain u my problem in a correct way...
the 2 functions u have given returns the height and width of the string...
but my question is how will i get the string over which mouse is thr...
that is if u keep the mouse over a variable name "var name"
which is of integer type my tooltip should show
"int var name".
i think i've explained u clearly now...
thanx 4 ur reply ...
|
|
|
|
|
|
i used builder 6 and got the whole cppbrowser to work but now i want to save the html into a text file,how do i convert the IDispatch to string?
this is what the help tells me.but honestly i don't understand
"Use Document to access an IDispatch interface for manipulating the contents of the HTML document through the COM object model. If there is no active document, Document is NULL. That is, you must first load a document using the Navigate or Navigate2 method before you can manipulate it using the Document interface.
For more information about this interface, see the document object section of Microsoft’s Dynamic HTML reference."
|
|
|
|
|
hye,
in my project,i m usind a DVR card which gives 4 channel video
now i have increased the width and height of my all 4 video channels....but the recorded file is not very clear.....
can anybody tell me what should i do????
Do i have to change video parameters like brightness,contrast or i have to change video standard like 4CIF,2CIF.
please help!!!!!
NT
|
|
|
|
|
My program crashed when it invoked one dll's function with debug mode.My code is below.
DVDErrorThrower err;
try {
err = m_session->BeginDiscAccess(hModule, device, DAM_READ_ONLY, 0, 0);
}
catch(dvd_eng_error e)
{
return E_FAIL;
}
The breakpoint is in _CRT_DEBUGGER_HOOK.
*******************************************************************************/
#include <dbgint.h>
#ifdef _DEBUG
#include <internal.h>
#include <limits.h>#include <mtdll.h>
#include <malloc.h>
#include <stdlib.h>
_CRT_ALLOC_HOOK _pfnAllocHook = _CrtDefaultAllocHook;
/***
*int _CrtDefaultAllocHook() - allow allocation
*
*Purpose:
* allow allocation
*
*Entry:
* all parameters ignored
*
*Exit:
* returns TRUE
*
*Exceptions:
*
*******************************************************************************/
int __cdecl _CrtDefaultAllocHook(
int nAllocType,
void * pvData,
size_t nSize,
int nBlockUse,
long lRequest,
const unsigned char * szFileName,
int nLine
)
{
return 1; /* allow all allocs/reallocs/frees */
}
#endif /* _DEBUG */
int _debugger_hook_dummy;
#ifdef _M_IA64
#undef _CRT_DEBUGGER_HOOK
#define _CRT_DEBUGGER_HOOK __crt_debugger_hook
#endif /* _M_IA64 */
__declspec(noinline)
void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved)
{
/* assign 0 to _debugger_hook_dummy so that the function is not folded in retail */
(_Reserved);
_debugger_hook_dummy = 0;
}
and the callstack is like below:
> msvcr80.dll!_crt_debugger_hook(int _Reserved=) Line 65 C
msvcr80.dll!_invoke_watson(const wchar_t * pszExpression=0x00000000, const wchar_t * pszFunction=0x00000000, const wchar_t * pszFile=0x00000000, unsigned int nLine=0, unsigned int pReserved=0) Line 181 + 0x7 bytes C++
msvcr80.dll!_invalid_parameter_noinfo() Line 99 + 0xc bytes C++
TnAPIEngine.dll!05c0531e()
[Frames below may be incorrect and/or missing, no symbols loaded for NeroAPIEngine.dll]
TnAPIEngine.dll!05d920b0()
ntdll.dll!77b21843()
ntdll.dll!77b216dc()
msvcr80.dll!malloc(unsigned int size=189077260) Line 163 + 0x63 bytes C
mfc80u.dll!operator new(unsigned int nSize=0) Line 349 + 0x3 bytes C++
TnAPIEngine.dll!05d925e9()
TnAPIEngine.dll!05dc89fe()
And my Pc's environoment is :
Vista ultimate.
visual stdio 2005 sp1
but if I ran my program step by step ,it would catch the exception the function threw. And also with release mode.the program worked well!
I'm crazy.
Can anybody help me?
|
|
|
|
|
|
I have installed it.but the bug also display.
|
|
|
|