|
I guess it should be..
qqq->Create(&wndTopMost, 50,50,300,300,SWP_NOSIZE);
// Fazlul
Get RadVC today! Play RAD in VC++
http://www.capitolsoft.com
|
|
|
|
|
Actually the prototype I've seen is:
virtual BOOL CWnd::Create
(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID,
CCreateContext* pContext = NULL); /ravi
"There is always one more bug..."
ravib@ravib.com
http://www.ravib.com
|
|
|
|
|
Actually, for CButton, the prototype is:
<br />
BOOL CButton::Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );<br />
Is this SWP_NOSIZE from SetWindowPos?
I vote pro drink
|
|
|
|
|
Oops, I was confusing with SetWindowPos
CWnd::SetWindowPos (
const CWnd* pWndInsertAfter,
int x,
int y,
int cx,
int cy,
UINT nFlags );
// Fazlul
Get RadVC today! Play RAD in VC++
http://www.capitolsoft.com
|
|
|
|
|
Me too.
I ment SetWindowPos
qqq->Create(...);
qqq->SetWindowPos(&qqq->wndTopMost, 50,50,300,300,SWP_NOSIZE);
qqq->ShowWindow(SW_SHOW);
Sorry 4 the confusion.
I still don't have an answer.
Please help.
BTW: come to #CodeProject on DalNet (mIRC)
|
|
|
|
|
Sagiv:
I need to look at your code more closely. Can you please
send a (zipped) sample app to fkabir@capitolsoft.com?
Cheers.
// Fazlul
Get RadVC today! Play RAD in VC++
http://www.capitolsoft.com
|
|
|
|
|
ok
BTW: come to #CodeProject on DalNet (mIRC)
|
|
|
|
|
Thanks for sending the code. Try this.
void CDlg::OnButton1()
{
CButton *qqq= new CButton();
qqq->Create("ASD", WS_CHILD | WS_VISIBLE, CRect(20,20,200,200), this, 12345);
qqq->BringWindowToTop();
} As a side note, your code will cause a memory leak (a CButton object). You should declare the object in stack instead of heap
class CDlg : public CDialog
{
..
..
CButton m_Button;
..
..
};
void CDlg::OnButton1()
{
m_Button.Create("ASD", WS_CHILD | WS_VISIBLE, CRect(20,20,200,200), this, 12345);
m_Button.BringWindowToTop();
}
// Fazlul
// Fazlul
Get RadVC today! Play RAD in VC++
http://www.capitolsoft.com
|
|
|
|
|
You right.
But there is one little BUG left.
Try to cover the window and then uncover it.
Then you'll see that the listbox is painted on top of the button.
Do you know how can I change the tab order during run-time ?
BTW: come to #CodeProject on DalNet (mIRC)
|
|
|
|
|
The cleaner solution to your problem would be to to set the tab order of the controls right. To do this, open the dialog template in VC++ resource editor and then select "Layout - Tab order" menu option. Now click on the blue boxes with numbers to set the tab orders of the controls. If you do this, you do not need the BringWindowToTop call, since the new button will be created using WS_TABSTOP style, as shown below.
void CDlg::OnButton1()
{
m_Button.Create("ASD", WS_CHILD | WS_VISIBLE | WS_TABSTOP,
CRect(20,20,200,200), this, 12345);
}
// Fazlul
Get RadVC today! Play RAD in VC++
http://www.capitolsoft.com
|
|
|
|
|
I think the tab order is not solution.
from 1 reason: it doesn't work .
try to cover the window and then uncover it again.
I'm hopeless
BTW: come to #CodeProject on DalNet (mIRC)
|
|
|
|
|
In fact the tab order method does work if you create your button on the dialog using VC++ resource editor (instead of creating them dynamically using CButton::Create(..) method). To make your button to appear on the top, make its Z-order as 1.
I see the problem when you create the control dynamically. As a workaround, you can override WM_CTLCOLOR message of the dialog and call a RedrawWindow() method for the new button. So the complete code will look like this..
void CDlg::OnButton1()
{
m_Button.Create("ASD", WS_CHILD | WS_VISIBLE | WS_TABSTOP, CRect(20,20,200,200), this, 12345);
m_Button.BringWindowToTop();
}
HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(m_Button.GetSafeHwnd())
m_Button.RedrawWindow();
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
Though the solution will do what you need, I will try to find a better solution. Let me know if this is okay with you, at least for now.
// Fazlul
Get RadVC today! Play RAD in VC++
http://www.capitolsoft.com
|
|
|
|
|
Fazlul. . .
1st thing 1st.
Thank you, so much 4 your help, and for your patience and desire to help me.
2nd thing:
This solution works great, except of 1 little bug:
try to drag/drop the button, like you are trying to reposition it.
somthing like WM_MOUSEDOWN and then WM_MOUSEMOVE.
You will see that the window will repaint it self every single move of the button.
I am sure that there is a cleaner and healthier way to solve it.
BTW: come to #CodeProject on DalNet (mIRC)
|
|
|
|
|
I didn't see much painting glitch on my system, but that could be because I was testing on a faster system. The following code should remove the problem.
HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
if(m_Button.GetSafeHwnd() && pWnd != &m_Button)
m_Button.RedrawWindow();
return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
} Let me know if it helps.
// Fazlul
Get RadVC today! Play RAD in VC++
http://www.capitolsoft.com
|
|
|
|
|
Thanks.
BTW: How old r u ?
|
|
|
|
|
OOPS . . .
I ment SetWindowPos
qqq->Create(...);
qqq->SetWindowPos(&qqq->wndTopMost, 50,50,300,300,SWP_NOSIZE);
qqq->ShowWindow(SW_SHOW);
Sorry 4 the confusion.
I still don't have an answer.
Please help.
BTW: come to #CodeProject on DalNet (mIRC)
|
|
|
|
|
Hi,
Is it Possible to connect a MySql Database with a VC++ app ???
regards
Sonu
|
|
|
|
|
Yes. Use the MySQL ODBC driver and MFC database classes, or use the MySQL++ C++ API calls directly.
|
|
|
|
|
where can i get the MySQL Driver ? I just have the SQL Server driver.
|
|
|
|
|
|
Yes, but be aware of that several user have reported problems with CRecordset and the ODBC-driver.
|
|
|
|
|
MySql Has a couple of headers and libs like DBLibrary is for SQLServer. These Headers and Libs are several Apis that permits the access to MySql, Open Recordset, Querys, etc...
Look in www.MySql.com...
Best Regards...
Carlos Antollini.
Sonork ID 100.10529 cantollini
|
|
|
|
|
Hi all, I have three simple questions that I just cannot solve :
1. How do I draw text with a transparent background? I have created a CFont structure (with appropriate colour, font and size), but don`t know how to draw its background transparently (it draws the text in a white box and pastes it to the screen)
2. How do I change the MFC default icons that appear in the top left hand corner of the Mainframe and Child frame respectively?
3. How do I change the line that says "MFC Application" when looking at the file in Windows Explorer?
Be grateful if someone could help me out, cheers guys,
Alan.
"When I left you I was but the learner, now I am the Master" - Darth Vader
|
|
|
|
|
1. i guess you should change the backgroundcolor of your output (e.g. determine the rect, draw a rectangle in this color (using a colored pen) and then use DrawText in this rectangle).. but no real transparency, i know.
2. in the resource editor there is an icon, called IDR_MAINFRAME. Change this and it will work (remember changing both the 32x32 and 16x16 icon)
3. resource edit / version / vs_version_info
"There are three roads to ruin: women, gambling and technicians. The most pleasant is with women, the quickest is with gambling, but the surest is with technicians." Georges Pompidou
|
|
|
|
|
Thanks for the response, your answers to questions 2 and 3 were cool, I didn`t spot the 16x16 icon and thats why I could change the icon for the app, but not the icons in the app. I would still like to know if text backgrounds and transparency is possible? I would be very surprised if it weren't.
Many Thanks Bernhard,
Alan.
"When I left you I was but the learner, now I am the Master" - Darth Vader
|
|
|
|
|