Shawn Poulson
September 17th, 1999, 11:31 AM
Let's say I want to create a dialog box that behaves like that of the ones in Photoshop 5.0. They are a toolbox frame style and are always on top of the parent window. I'm not concerned about snapping windows together via gravity, but I'd like to create a dialog that is not Modal, but yet not completely free from the parent.
What type of window is this and how can I find out how to use it?
Thanks.
---
Shawn Poulson
spoulson@bigfoot.com
Nathan Sugioka
September 17th, 1999, 01:31 PM
If you're using Microsoft Visual C++, you might want to look under help, under CreateDialog. Here's the help page:
CreateDialog
The CreateDialog macro creates a modeless dialog box from a dialog box template resource. The CreateDialog macro uses the CreateDialogParam function.
HWND CreateDialog( HINSTANCE hInstance,
// handle to application instance
LPCTSTR lpTemplate,
// identifies dialog box template name
HWND hWndParent,
// handle to owner window
DLGPROC lpDialogFunc
// pointer to dialog box procedure
);
Parameters
hInstance
Identifies an instance of the module whose executable file contains the dialog box template.
lpTemplate
Identifies the dialog box template. This parameter is either the pointer to a null-terminated character string that specifies the name of the dialog box template or an integer value that specifies the resource identifier of the dialog box template. If the parameter specifies a resource identifier, its high-order word must be zero and its low-order word must contain the identifier. You can use the MAKEINTRESOURCE macro to create this value.
hWndParent
Identifies the window that owns the dialog box.
lpDialogFunc
Points to the dialog box procedure. For more information about the dialog box procedure, see DialogProc.
Return Values
If the function succeeds, the return value is the handle to the dialog box.
If the function fails, the return value is NULL.
Remarks
The CreateDialog function uses the CreateWindowEx function to create the dialog box. CreateDialog then sends a WM_INITDIALOG message (and a WM_SETFONT message if the template specifies the DS_SETFONT style) to the dialog box procedure. The function displays the dialog box if the template specifies the WS_VISIBLE style. Finally, CreateDialog returns the window handle to the dialog box.
After CreateDialog returns, the application displays the dialog box (if it is not already displayed) by using the ShowWindow function. The application destroys the dialog box by using the DestroyWindow function.
Windows 95: The system can support a maximum of 16,364 window handles.
See Also
CreateDialogIndirect, CreateDialogIndirectParam, CreateDialogParam, CreateWindowEx, DestroyWindow, DialogBox, DialogProc, ShowWindow, WM_INITDIALOG, WM_SETFONT
Good luck!
Nathan Sugioka
CCPPProgrammer
September 17th, 1999, 02:29 PM
What you are thinking of is a "modeless" dialog box. They are a little tricky, but not too bad. Instead of creating a class for your dialog and then calling DoModal(), you should call Create() instead..... look into the "CDialog::Create()" function for more details.
Hope this helped
~DM