|
How to obtain file header for a file ?
Thanks in advance
Rin
|
|
|
|
|
|
|
There is no such thing as a general file header!
There are general file attributes, you can get them with GetFileSize(), GetFileType(), GetFileTime() e.t.c.
Another thing is that files used by certain applications can have a file header. In that case, the header is specific to the application that created the file in question.
|
|
|
|
|
|
|
This trouble is fixed, thanks kakan
|
|
|
|
|
How can i change the dialog box background color dynamically.
|
|
|
|
|
you ca use WM_CTLCOLOR or WM_PAINT
whitesky
|
|
|
|
|
But i want to chage the background depending on the color specified dynamically. I am getting an exception when i post the WM_CTLCOLOR message .
Thanks for ur reply,
|
|
|
|
|
i guess you getting exception because use a brush,yes?
see here maybe it is some helpful to you
<br />
void CAnswerDlg::OnPaint()<br />
{<br />
CPaintDC dc(this);
dc.FillSolidRect(0,0,GetSystemMetrics (SM_CXSCREEN),GetSystemMetrics (SM_CYSCREEN),<br />
RGB(53,97,200));<br />
}<br />
--------------<br />
HBRUSH CAnswerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)<br />
{<br />
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);<br />
return (HBRUSH)GetStockObject(WHITE_BRUSH);<br />
}<br />
<br />
whitesky
|
|
|
|
|
The code was working fine.
But the controls like edit box etc.. are not visible bcoz of FillSolidRect(). How can i solve this problem
|
|
|
|
|
Are you sure i test your problem but these are visible i used this code
(editbox,button,radio,..)are visible
<br />
COLORREF Color;<br />
Color=GetDC()->GetBkColor();<br />
....<br />
....<br />
void CAnswerDlg::OnPaint()<br />
{<br />
CPaintDC dc(this);
dc.FillSolidRect(0,0,GetSystemMetrics (SM_CXSCREEN),GetSystemMetrics (SM_CYSCREEN),<br />
Color);<br />
}<br />
<br />
void CAnswerDlg::OnBnClickedButton1()<br />
{<br />
Color=RGB(53,97,200);<br />
Invalidate();<br />
}<br />
whitesky
|
|
|
|
|
Though you could do it by these ways, HandlingWM_ERASEBKGND is the right one for it.
<marquee scrollamount="1" scrolldelay="1" direction="up" height="10" step="1">--[ ]--
[My Current Status]
|
|
|
|
|
but i want to know why he cant show controls its attract for me to find answer for this question (of course i need to see his code that how to use)
whitesky
|
|
|
|
|
My code is:
BOOL CSliderDlg::OnEraseBkgnd(CDC* pDC)
{
if(m_clr.GetPos()!=0)
{
int color=m_clr.GetPos();
COLORREF clr=RGB(color,color,color);
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(&rect,clr);
}
return CDialog::OnEraseBkgnd(pDC);
}
I am calling this function from WM_HSCROLL handler.
m_clr is the slider ctrl.
If there is any mistake in my, let me that mistake.
Thanx.
|
|
|
|
|
this code it seems not problem i tested this code and it work fine of course without if(m_clr.GetPos()!=0) like this
<br />
BOOL CAnswerDlg::OnEraseBkgnd(CDC* pDC) <br />
{<br />
COLORREF clr=RGB(53,97,200);<br />
CRect rect;<br />
GetClientRect(&rect);<br />
pDC->FillSolidRect(&rect,clr);<br />
return TRUE; <br />
}
and controls are visible you can use WM_CTLCOLOR with a brush and it work and i think it good for you
whitesky
|
|
|
|
|
I want to change the back ground of dialog when i move the slider ctrl.
That's why i used int color=m_clr.GetPos();
Ths background of the dialog was changing but the controls are not visible.
|
|
|
|
|
Try this
CRect rc;<br />
GetClientRect(&rc);<br />
pDC->FillSolidRect(&rc, m_clrBack);
Appu..
"If you judge people, you have no time to love them."
|
|
|
|
|
|
I think the appropriate place to change the background colour of your dialog box is the handler for WM_ERASEBKGND notification. You can put here just two lines:
BOOL CMyDlg::OnEraseBkgnd(CDC* pDC)
{
pDC->FillRect(CRect(0,0,32000,32000), &CBrush(RGB(0,0,255)));
return TRUE;
}
If you need to vary the colour (or just to optimize the solution), make a CBrush member variable and use CreateSolidBrush to set the colour. You can use CreatePatternBrush or CreateHatchBrush to have another kind of background.
-- modified at 3:13 Friday 16th June, 2006
|
|
|
|
|
one way
HBRUSH MYDialog::OnCtlColor( CDC* pDC_i, CWnd* pWnd_i, UINT uCtlColor_i )
{
HBRUSH hDefaultBrush = CDialog::OnCtlColor( pDC_i, pWnd_i, uCtlColor_i );
if( CTLCOLOR_DLG == uCtlColor_i )
{
// Return a black brush so that the background become balck
return reinterpret_cast<hbrush>(GetStockObject( BLACK_BRUSH ));
}
return hDefaultBrush;
}
Another way from the InitInstance of the App class u may call
SetDialogBkColor( RGB(255,0,0) )
nave
|
|
|
|
|
But the background color is not changing. Here is my code:
OnPaint()
{
.............
CSliderApp* app=(CSliderApp*)AfxGetApp();
app->ChangeDialogColor((COLORREF)m_clr.GetPos());
}
void CSliderApp::ChangeDialogColor(COLORREF ref)
{
SetDialogBkColor(ref);
}
Is there anything wrong
|
|
|
|
|
what error you have previous error can you show your code that how to use to change background color
whitesky
|
|
|
|
|
If you are using VS 2003 or VS 2005, you will found that the definition of SetDialogBkColor function in afxwin2.inl file is:
_AFXWIN_INLINE void CWinApp::SetDialogBkColor(COLORREF , COLORREF )
{
}
Therefore it does nothing. Documentation says that it is obsolete. You should consider other solutions.
|
|
|
|