|
haven't tried it out.. but (as much as i know.. from the back of my head)
using the WS_THICKFRAME style should do the trick..
"I'm from the South Bronx, and I don't care what you say: those cows look dangerous." U.S. Secretary of State Colin Powell at George Bush's ranch in Texas
|
|
|
|
|
My dialog has the WS_THICKFRAME style and it is resizable, but it doesn't have a sizing gripper.
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Here is some code I use. It is part of a class, but should give you what you need.
bool
CWin_Resize::TrackCreateSize( bool want_sizebmp )
{
CRect rc;
ASSERT( IsValid() );
m_pWnd->GetWindowRect( &rc );
m_minWidth = rc.Width();
m_minHeight = rc.Height();
m_pWnd->GetClientRect( &rc );
m_old_cx = rc.Width();
m_old_cy = rc.Height();
m_bIs_Resizeable = ( m_pWnd->GetStyle() & WS_THICKFRAME ) ne 0;
if( want_sizebmp
&& m_bIs_Resizeable
)
{
if( !m_bmSizeBitmap.LoadOEMBitmap( OBM_SIZE ) )
TRACE0(_T("*** ERROR: CWin_Resize::OnInitDialog(): LoadOEMBitmap() failed.\n"));
else
{
BITMAP BitMap;
m_pWnd->GetClientRect( &rc );
m_bmSizeBitmap.GetBitmap( &BitMap );
CRect szrc( rc.Width() - BitMap.bmWidth, rc.Height() - BitMap.bmHeight, rc.Width(), rc.Height() );
if( !m_wndSizeBitmap.Create( NULL, WS_VISIBLE | WS_CHILD | SS_BITMAP, szrc, m_pWnd )
|| !m_wndSizeBitmap.ModifyStyleEx( 0, WS_EX_TRANSPARENT )
)
TRACE0( _T( "*** ERROR CWin_Resize::OnInitDialog() : Can't create bitmap control\n" ) );
else
{
m_wndSizeBitmap.SetBitmap( m_bmSizeBitmap );
Ctrl_SetAnchorInfo( m_wndSizeBitmap.m_hWnd, ANCHOR_RIGHT | ANCHOR_BOTTOM );
}
}
}
RestoreSize();
return TRUE;
}
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
What is Ctrl_SetAnchorInfo ?
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
What is Ctrl_SetAnchorInfo?
Is is part of my resizeable dialog class code.
m_wndSizeBitmap is a CStatic and this adds it to the list of controls that need to be moved when a dialog is resized. You've got your own resizing code I think you said, so just handle the CStatic in that.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Ok, so this is only a bitmap.
But when I move the mouse cursor on the resizing bitmap, it doesn't change to the resizing cursor... resizing only works when I point on a side or corner of the window...
I would like to make the resizing bitmap work like a gripper, so with real resizing cursor, as Internet Explorer does it.
Any idea or did I overlook something?
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
Ok, so this is only a bitmap.
But when I move the mouse cursor on the resizing bitmap, it doesn't change to the resizing cursor... resizing only works when I point on a side or corner of the window...
I would like to make the resizing bitmap work like a gripper, so with real resizing cursor, as Internet Explorer does it.
Any idea or did I overlook something?
I haven't bothered with that. The bmp us just a visual clue that the dialog is resizeable. They then drag the edges as per normal. I think that's enough.
Neville Franks, Author of ED for Windows. Free Trial at www.getsoft.com
|
|
|
|
|
Neville Franks wrote:
I haven't bothered with that. The bmp us just a visual clue that the dialog is resizeable. They then drag the edges as per normal. I think that's enough.
Create a new scrollbar class (I called it "CInvisibleGripper" ) derived from CScrollBar which overrides the OnPaint method (which simply doesn't draw itself). So you have a hidden scrollbar class. Create a sizebox/gripper as the others have posted below, and you have a working gripper
I've done it that way.
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
By "sizing gripper" do you mean the triangular bitmap found at the lower right corner of an IE window? If so, just create a status bar in your dialog and position it at the bottom edge. You'll need to resize and reposition the status bar in your OnSize() handler. I don't believe the autosize option works for dialogs.
See this page[^] for an example screenshot of a sizing grip in a dialog based app.
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
And if I don't want to have a status bar?
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
And if I don't want to have a status bar?
Try this:
Declare in MyDialog.h:
CScrollBar m_Grip;
in CMyDialog::OnInitDialog:
CRect rect;
GetClientRect(rect);
rect.left = rect.right - 10;
rect.top = rect.bottom - 10;
m_Grip.Create(WS_CHILD | SBS_SIZEBOX | SBS_SIZEBOXBOTTOMRIGHTALIGN |
SBS_SIZEGRIP | WS_VISIBLE, rect, this, AFX_IDW_SIZE_BOX);
in CMyDialog::OnSize:
CWnd *pGripper = GetDlgItem(AFX_IDW_SIZE_BOX);
if (pGripper)
{
CRect rectGripper, rectClient;
pGripper->GetWindowRect(&rectGripper);
GetClientRect(rectClient);
rectClient.left = rectClient.right - rectGripper.Width();
rectClient.top = rectClient.bottom - rectGripper.Height();
pGripper->MoveWindow(&rectClient);
}
HPS HwndSpy - GUI developer's aid to visually
locate and inspect windows. For the month of August
only, use coupon code CP-81239 for 30% off.
|
|
|
|
|
Ahh, wonderful! Just one more question: is the size of a gripper always 10? Independent of how big statusbars and scrollbars are?
Thanks!!!
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Dominik Reichl wrote:
is the size of a gripper always 10?
No. Windows will size the gripper to whatever the system default is. You can actually replace 10 with anything (or just remove it), and it would probably work ok.
HPS HwndSpy - GUI developer's aid to visually
locate and inspect windows. For the month of August
only, use coupon code CP-81239 for 30% off.
|
|
|
|
|
Dominik Reichl wrote:
And if I don't want to have a status bar?
I assume you mean you don't want the status bar to look like a status bar (and not that you're averse to using a CStatusBar object).
You can restrict the width of the status bar to that of the sizer grip, so that it doesn't interfere with controls in your dialog, as in the standard Win2K "File Open" dialog for an example.
/ravi
Let's put "civil" back in "civilization"
Home | Articles | Freeware | Music
ravib@ravib.com
|
|
|
|
|
Yes, I've done this now!
Many thanks!!
-Dominik
_outp(0x64, 0xAD);
and
__asm mov al, 0xAD __asm out 0x64, al
do the same... but what do they do??
|
|
|
|
|
Hi i have a dialog based app and im trying to add a tray icon i can get the icon to display but whenever you move the mouse into the tray it dissapears here is the code i have for it
niData is stored in the class and is zeroed in the constructor
void CWinDEDlg::InitTrayIcon()
{
niData.cbSize = sizeof(NOTIFYICONDATA);
niData.uID = TRAY_ID;
niData.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
niData.hIcon = (HICON)m_hIcon;
niData.hWnd = (HWND)this;
niData.uCallbackMessage = ICON_MESSAGE;
Shell_NotifyIcon(NIM_ADD, &niData);
}
does anyone know why the icon just dissapears?
|
|
|
|
|
I'm guessing it's because you've given the shell a zero length tooltip. Try removing the NIF_TIP
flag. Though windows should just "shrug" and move on...
Do you have a handler for ICON_MESSAGE? If so, does it get called before the icon disappears?
Is your m_hIcon still valid?
Iain.
|
|
|
|
|
//Toolbar m_wndtoolbar
// m_wndtoolbar is a public dialog member variable
//follow is my app para ,But it failed to change toolbar
void CToolbarDlg::OnButton ShowToolBar1()
{
// TODO: Add your control notification handler code here
if (m_wndtoolbar.GetSafeHwnd())
{
m_wndtoolbar.DestroyWindow();
}
if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS ,
CRect(4,4,0,0)) || !m_wndtoolbar.LoadToolBar(IDR_TOOLBAR1) )
{
TRACE0("failed to create toolbar\n");
return;
}
m_wndtoolbar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
}
void CToolbarDlg::OnButtonShowToolBar2()
{
// TODO: Add your control notification handler code here
if (m_wndtoolbar.GetSafeHwnd())
{
m_wndtoolbar.DestroyWindow();
}
if (!m_wndtoolbar.CreateEx( this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS ,
CRect(4,4,0,0)) || !m_wndtoolbar.LoadToolBar(IDR_TOOLBAR2) )
{
TRACE0("failed to create toolbar\n");
return;
}
m_wndtoolbar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
}
|
|
|
|
|
I have dialog based MFC application.
How to create scrollable child dialog window (placed in main dialog window),containing control elements ?
Thank you
rrrado
|
|
|
|
|
Its a bit convoluted, but I've done this in the past.
Created a main dialog with some controls on it. The two relevant ones were a scroll control, and
a large static control.
In the OnInitDialog, I replaced the static control with a same size but very plain (no title etc)
dialog. In THAT dialog, I created the scrollable one, which was larger. I then got the relevant sizes
and initialised the scroll bar.
I handled the WM_VSCROLL messages (it was only large in one direction, but the principle is the same
two ways) and moved the large grandchild dialog. The child dialog acted to clip it.
I also had to disable non-visible controls on the scrollable dialog as the user was able to tab to
non-visible controls. Not too good. I never got PgUp / PgDown hooked into scrolling the dialog.
But to this day, no user has spotted that lack!
Iain.
|
|
|
|
|
Thank for the idea
I'd like to find not so complicated solution, if unsuccessful, I'll
try to use your solution
I tried just to enable scroll bar on dialog (ShowScrollBar(SB_VERT , TRUE );)
but i can't set proper size get it working ....
rrrado
|
|
|
|
|
I've found article abut it here, I'm gonna look at it
http://www.codeproject.com/dialog/scrollablechilddialog.asp
|
|
|
|
|
I added a scroll ctrl as its own self. That way I could line up with the scrolling dialog, rather
than at the edge of the parent.
Iain,
|
|
|
|
|
Hi
I want to make a demo (presentation) of a VC++ program i have written.
I used this program:
http://www.turbodemo.com/Eng/index.htm
but because it is trial, i can't add alot of screenshots.
Does anyone know a good program which can make a demo (in for example .exe or .swf format) and is free to use? (no registration)
I would GREATLY appreciate any comments on this one, i've been searching on the web like hell but i can't seem to find one working properly without having to be registered. :S
Greetings
Jens
|
|
|
|
|
It may be complete overkill, but OpenOffice has a powerpoint-style presentation program, and its free.
|
|
|
|