Incorporating Windows Code into a Views Application
You can easily incorporate into your Views application Windows menus and panels that were created with one of the numerous interface generators that Microsoft Windows supports. Examples can be found in the subdirectory foundation\windows, which is located under <ILVHOME>\samples. Refer also to the Views Foundation Tutorials in the online documentation.
The following example displays a panel that was created by any interface builder, and linked with your application with the resource compiler.
#define VIEW_ID 1010 // The ID of a sub-window in the panel
int PASCAL ILVEXPORTED
DialogProc(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg) {
case WM_INITDIALOG:
// Create some Views object in the dialog.
InitRogueWaveViews((IlvDisplay*)lParam, GetDlgItem(dlg, VIEW_ID));
return 1;
case WM_COMMAND:
if (wParam == QUIT_ID) {
EndDialog(dlg, 1); // Close the dialog
ReleaseRogueWaveViews(); // Delete Views objects
PostQuitMessage(0); // Exit the event loop
return 1;
}
}
return 0;
}
int
main(int argc, char* argv[])
{
// Connect to the windowing system.
IlvDisplay* display = new IlvDisplay("RogueWaveViews", "", argc, argv);
if (display->isBad()) {
IlvFatalError("Couldn’t connect to display system");
delete display;
return 1;
}
// Create the dialog box.
if (DialogBoxParam(display->getInstance(), "MY_PANEL", 0,
(FARPROC)DialogProc, (long)display) == -1)
IlvFatalError("Couldn’t create dialog");
delete display;
return 1;
}
void
InitRogueWaveViews(IlvDisplay* display, HWND wnd)
{
// For example: a container that uses the ‘wnd’ window.
container = new IlvContainer(display, wnd);
...
}void
ReleaseRogueWaveViews()
{
delete container;
}
In the InitRogueWaveViews member function, a new IlvContainer object holding an existing Windows panel, wnd, is created. In your user interface generator, you must specify that RogueWaveViewsWndClass is the WindowsClass to be used for that window.
In this example, since a main function is provided instead of the WinMain entry point that Microsoft Windows expects to start an application, you have to link your object files with the ILVMAIN.OBJ file. This file, supplied with Views, defines a default WinMain function that does all the necessary initialization operations and calls the main function.