PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 1/10 TITLE : Customizing a Borland Dialog's minimized icon. How to customize the icon used for minimized Borland Dialogs. The default behaviour of the BORDLG is to use the upper left corner of your client screen for icon when minimized. Fortunately one can change this behaviour. The following outlines the required steps: 1. In your resource script, give your dialog a class that begins with BORDLG followed by some string. In the example .RC file, the class name of the dialog is BORDLG_1. MainDialog DIALOG 18, 18, 142, 92 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX CLASS "BorDlg_1" CAPTION "Main Dialog" BEGIN CONTROL "Button", IDOK, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 55, 61, 32, 20 CONTROL "", -1, "BorShade", BSS_GROUP | WS_CHILD | WS_VISIBLE, 13, 11, 117, 40 CTEXT "Hello World!", -1, 34, 25, 74, 10, WS_CHILD | WS_VISIBLE | WS_GROUP END 2. Register a new class with lpszClassName equal to the name used in step 1. Specify the ICON to be used for the dialog by // code to subclass bordlg to display my own icon GetClassInfo(NULL, "bordlg", &wc); wc.hIcon = LoadIcon(Inst, "MainIcon"); wc.hInstance = Inst; wc.lpszClassName = "BORDLG_1"; RegisterClass(&wc); PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 2/10 TITLE : Customizing a Borland Dialog's minimized icon. The following is the listing to a complete example that will demonstrate the steps discussed above. /* ---------- *\ | MDGL.H | \* ---------- */ #ifndef __MDLG_H #define __MDLG_H #define lpszAPPSTR "MDLG" #define lpszTITLE "MDLG WINDOW" int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int); BOOL _export FAR PASCAL MainDlgProc(HWND, UINT, WPARAM, LPARAM); #endif // __MDLG_H /* --------- *\ | MDLG.RC | \* --------- */ #include "MDLG.H" MainIcon ICON BEGIN '00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02' '00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00' '00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00' '00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0' 'C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 87 77' '77 77 77 77 77 77 77 77 77 77 77 77 77 77 F8 77' '77 77 77 77 77 77 77 77 77 77 77 77 77 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 3/10 TITLE : Customizing a Borland Dialog's minimized icon. '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 98 88 89 99 88 89 98 88 98 88 88 77 FF 88' '88 88 98 88 98 88 98 98 89 89 88 88 88 77 FF 88' '88 88 98 88 98 88 88 88 98 89 88 88 88 77 FF 88' '88 88 98 88 99 99 98 89 88 89 88 88 88 77 FF 88' '88 88 98 88 98 88 98 98 89 89 88 88 88 77 FF 88' '88 88 98 88 89 99 88 89 98 89 98 88 88 77 FF 88' '88 88 98 88 88 88 88 88 88 89 88 88 88 77 FF 88' '88 88 98 88 88 88 88 88 88 89 88 88 88 77 FF 88' '88 99 99 98 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF 88' '88 88 88 88 88 88 88 88 88 88 88 88 88 77 FF FF' 'FF FF FF FF FF FF FF FF FF FF FF FF FF 87 FF FF' 'FF FF FF FF FF FF FF FF FF FF FF FF FF F8 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00' END MainDialog DIALOG 18, 18, 142, 92 STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX CLASS "BORDLG_1" CAPTION "Main Dialog" BEGIN CONTROL "Button", IDOK, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 55, 61, 32, 20 PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 4/10 TITLE : Customizing a Borland Dialog's minimized icon. CONTROL "", -1, "BorShade", BSS_GROUP | WS_CHILD | WS_VISIBLE, 13, 11, 117, 40 CTEXT "Hello World!", -1, 34, 25, 74, 10, WS_CHILD | WS_VISIBLE | WS_GROUP END /* ---------- *\ | MDLG.DEF | \* ---------- */ NAME MDLG EXETYPE WINDOWS DESCRIPTION 'Customized Icon for Borland Dialog Sample' STUB 'WINSTUB.EXE' CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE MULTIPLE HEAPSIZE 8192 STACKSIZE 8192 EXPORTS MainProc @1 /* ---------- *\ | MDLG.C | \* ---------- */ #define STRICT #include #include "MDLG.H" HINSTANCE hInst; #pragma argsused BOOL _export FAR PASCAL MainProc( HWND Dlg, UINT message, WPARAM wParam, LPARAM lParam ) { switch (message) { case WM_INITDIALOG: return TRUE; PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 5/10 TITLE : Customizing a Borland Dialog's minimized icon. case WM_SYSCOMMAND: if (( wParam & 0xFFF0 ) == SC_CLOSE ) { EndDialog( Dlg, IDCANCEL ); return( TRUE ); } else return( FALSE ); case WM_DESTROY: PostQuitMessage( 0 ); break; case WM_COMMAND: if ( wParam == IDOK ) EndDialog( Dlg, IDOK ); break; } return( FALSE ); } #pragma argsused int PASCAL WinMain ( HINSTANCE Inst, HINSTANCE PrevInstance, LPSTR CmdLine, int CmdShow ) { MSG Msg; WNDCLASS wc; FARPROC lpfnMainDlg; hInst = Inst; if ( !PrevInstance ) { // Code to superclass bordlg to display my own icon GetClassInfo( NULL, "BORDLG", &wc ); wc.lpszMenuName = NULL; wc.hIcon = LoadIcon(Inst, "MainIcon"); wc.hInstance = Inst; wc.lpszClassName= "BORDLG_1"; RegisterClass( &wc ); } PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 6/10 TITLE : Customizing a Borland Dialog's minimized icon. lpfnMainDlg = MakeProcInstance((FARPROC)MainProc, Inst); DialogBox( Inst, "MainDialog", NULL, (DLGPROC)lpfnMainDlg); while( GetMessage( &Msg, NULL, NULL, NULL ) ) { TranslateMessage(&Msg); DispatchMessage(&Msg); } FreeProcInstance(lpfnMainDlg); return( 0 ); } The following is an example of doing the same thing, but uses ObjectWindows Library instead. /* ---------- *\ | BORDLG.H | \* ---------- */ #ifndef BorDlg_h #define BorDlg_h 1 #define lpszAPPSTR "Borland Dialog Test" #define lpszCLASSNAME "BorDlg_1" #define lpszTITLE "Borland Dialog Test" #endif /* ---------- *\ | BORDLG.CPP | \* ---------- */ #include "BorDlg.h" ICON_1 ICON BEGIN '00 00 01 00 01 00 20 20 10 00 00 00 00 00 E8 02' '00 00 16 00 00 00 28 00 00 00 20 00 00 00 40 00' '00 00 01 00 04 00 00 00 00 00 80 02 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 BF 00 00 BF 00 00 00 BF BF 00 BF 00' '00 00 BF 00 BF 00 BF BF 00 00 C0 C0 C0 00 80 80' PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 7/10 TITLE : Customizing a Borland Dialog's minimized icon. '80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00' '00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 EE EE EE EE 00 00 00 00 00 00 00 00' '00 00 0E EE EE EE EE EE EE E0 00 00 00 00 00 00' '00 00 EE EE EE EE EE EE EE EE 00 00 00 00 00 00' '00 0E EE EE EE EE EE EE EE EE E0 00 00 00 00 00' '00 EE EE EE EE EE EE EE EE EE EE 00 00 00 00 00' '0E EE EE EE EE EE EE EE EE EE EE E0 00 00 00 00' 'EE EE EE EE EE EE EE EE EE EE EE EE 00 00 00 0E' 'EE EE EE EE EE EE EE EE EE EE EE EE E0 00 00 0E' 'EE EE E4 44 44 44 44 44 44 44 EE EE E0 00 00 0E' 'EE EE EE EE EE EE EE EE EE EE EE EE E0 00 00 EE' 'EE EE EE EE EE EE EE EE EE EE EE EE EE 00 00 EE' 'EE EE EE EE EE EE EE EE EE EE EE EE EE 00 00 EE' 'EE EE EE EE EE EE EE EE EE EE EE EE EE 00 00 EE' 'EE EE EE EE EE EE EE EE EE EE EE EE EE 00 00 EE' 'EE EE EE EE EE EE EE EE EE EE EE EE EE 00 00 EE' 'EE EE EE EE EE EE EE EE EE EE EE EE EE 00 00 EE' 'EE EE EE EE EE EE EE EE EE EE EE EE EE 00 00 EE' 'EE EE ED DD EE EE EE ED DD EE EE EE EE 00 00 0E' 'EE EE DD DD DE EE EE DD DD DE EE EE E0 00 00 0E' 'EE EE DD DD DE EE EE DD DD DE EE EE E0 00 00 0E' 'EE EE DD DD DE EE EE DD DD DE EE EE E0 00 00 00' 'EE EE ED DD EE EE EE ED DD EE EE EE 00 00 00 00' '0E EE EE EE EE EE EE EE EE EE EE E0 00 00 00 00' '00 EE EE EE EE EE EE EE EE EE EE 00 00 00 00 00' '00 0E EE EE EE EE EE EE EE EE E0 00 00 00 00 00' '00 00 EE EE EE EE EE EE EE EE 00 00 00 00 00 00' '00 00 0E EE EE EE EE EE EE E0 00 00 00 00 00 00' '00 00 00 00 EE EE EE EE 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00' '00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF' 'FF FF FF FF FF FF C0 00 00 03 C0 00 00 03 C0 00' '00 03 C0 00 00 03 C0 00 00 03 C0 00 00 03 C0 00' '00 03 C0 00 00 03 C0 00 00 03 C0 00 00 03 C0 00' '00 03 C0 00 00 03 C0 00 00 03 C0 00 00 03 C0 00' '00 03 C0 00 00 03 C0 00 00 03 C0 00 00 03 C0 00' '00 03 C0 00 00 03 C0 00 00 03 C0 00 00 03 C0 00' '00 03 C0 00 00 03 C0 00 00 03 C0 00 00 03 C0 00' '00 03 C0 00 00 03 FF FF FF FF FF FF FF FF' END PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 8/10 TITLE : Customizing a Borland Dialog's minimized icon. MAINDIALOG DIALOG 18, 18, 142, 92 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX CLASS "bordlg_1" CAPTION "My Test Dialog" BEGIN CONTROL "Button", IDOK, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 21, 62, 32, 20 CONTROL "Button", IDCANCEL, "BorBtn", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 87, 62, 32, 20 CTEXT "Hello", -1, 41, 28, 56, 9, WS_CHILD | WS_VISIBLE | WS_GROUP CONTROL "", 101, "BorShade", 1 | WS_CHILD | WS_VISIBLE, 33, 16, 75, 36 END /* ---------- *\ | BORDLG.CPP | \* ---------- */ #define STRICT #define WIN31 #include #include #pragma hdrstop #include #include #include "BorDlg.h" class TBorDlgApplication:public TApplication { public: TBorDlgApplication(LPSTR lpszName, HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow); virtual void InitMainWindow(); }; class TBorDlg : public TDialog { public: TBorDlg(PTWindowsObject pwParent, LPSTR lpszTitle, PTModule pmModule); virtual LPSTR GetClassName(); PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 9/10 TITLE : Customizing a Borland Dialog's minimized icon. virtual void GetWindowClass(WNDCLASS&); }; int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { TBorDlgApplication BorDlg(lpszAPPSTR, hInstance, hPrevInstance, lpszCmdLine, nCmdShow); BorDlg.Run(); return BorDlg.Status; } TBorDlgApplication::TBorDlgApplication(LPSTR lpszName, HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) : TApplication(lpszName, hInstance, hPrevInstance, lpszCmdLine, nCmdShow) { /* initialization */ } void TBorDlgApplication::InitMainWindow() { MainWindow = new TBorDlg(NULL, "MAINDIALOG", NULL); } TBorDlg::TBorDlg(PTWindowsObject pwParent, LPSTR lpszTitle, PTModule pmModule) : TDialog(pwParent, lpszTitle, pmModule) { /* window specific initialization */ } LPSTR TBorDlg::GetClassName() { return lpszCLASSNAME; } void TBorDlg::GetWindowClass(WNDCLASS& wc) { // Get previous class information on bordlg ::GetClassInfo(GetApplication()->hInstance, "bordlg", &wc); PRODUCT : Borland C++ NUMBER : 1049 VERSION : 3.1 OS : WIN DATE : October 19, 1993 PAGE : 10/10 TITLE : Customizing a Borland Dialog's minimized icon. // Update the important stuff, definitely needed wc.hInstance = GetApplication()->hInstance; wc.lpszClassName = lpszCLASSNAME; // change class name to subclassed name wc.hIcon = LoadIcon(GetApplication()->hInstance, "ICON_1"); // change icon for minimized dialog } /* ---------- *\ | BORDLG.DEF | \* ---------- */ NAME BorDlg EXETYPE WINDOWS DESCRIPTION 'Customized Icon for Borland Dialog Sample' STUB 'WINSTUB.EXE' CODE PRELOAD MOVEABLE DISCARDABLE DATA PRELOAD MOVEABLE MULTIPLE HEAPSIZE 8192 STACKSIZE 8192 DISCLAIMER: You have the right to use this technical information subject to the terms of the No-Nonsense License Statement that you received with the Borland product to which this information pertains.