News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

HOWL v0.4 is now available

Started by Randall Hyde, March 24, 2010, 02:20:12 AM

Previous topic - Next topic

Randall Hyde

Hi All,

I've been playing around with a Win32 application framework for HLA. Though I've still got quite a bit of work to do on it, it's working well enough at this point that people can start taking a look at the code and offering suggestions, etc., for its development.

I'm calling this product "HOWL" (HLA Object Windows Library).
In a nutshell, what this application framework does is allow you to declare how your windows will look in a very high-level format and then specify the functions to call when certain events occur (such as button presses, menu selections, etc.). Gone is the tedium of message handling and parsing common in assembly language programs that stick to the low-level Win32 API.

Here is a short example (included in the download) that demonstrates HOWL in action.  When you compile this code (and link it against the HOWL library code), it automatically generates all the code to create and display all the associated "widgets" in a Window:


// Here's the form definition for the main application's window:

wForm( mainAppWindow );

    override method onClose;
   
    menuItem_string( menu_exit, false, "Exit", exitHandler );
    menuItem_string( menu_1_1, false, "1_1", handler_1_1 );
    menuItem_string( menu_1_2, true, "1_2", handler_1_2 );
    menuItem_string( menu_1_3, true, "1_3", handler_1_3 );
    menuItem_string( menu_2_1, false, "2_1", handler_2_1 );
    menuItem_string( menu_2_2_1, false, "2_2_1", handler_2_2_1 );
    menuItem_string( menu_2_2_2, false, "2_2_2", handler_2_2_2 );
    wSubMenu( menu_2_2, "menu2_2", menu_2_2_1, menu_2_2_2 );
    menuItem_separator( menuSeparator );
    wSubMenu( menu_1, "menu1", menu_1_1, menu_1_2, menuSeparator, menu_exit );
    wSubMenu( menu_2, "menu2", menu_2_1, menu_2_2 );
    wMainMenu( menu_1, menu_2 );
   
    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    //                           T A B   # 1                                 //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////
   
    wTab( tab1, "tab1", NULL, w.LTGRAY_BRUSH );
   
        radioSet_widget
        (
            radioSet,           // Field name in mainWindow object     
            "Radio Set",        // Caption for push button
            300,                // x position
            10,                 // y position
            250,                // width
            150                 // height
        ); 

            radioSetButton_widget
            (
                radioSetButton1,        // Field name in mainWindow object 
                "Radio Set Button1",    // Caption for push button
                310,                    // x position
                30,                     // y position
                200,                    // width
                25,                     // height
                NULL                    // "on click" event handler
            ); 

            radioSetButton_widget
            (
                radioSetButton2,        // Field name in mainWindow object 
                "Radio Set Button2",    // Caption for push button
                310,                    // x position
                60,                     // y position
                200,                    // width
                25,                     // height
                NULL                    // "on click" event handler
            ); 

            radioSetButton_widget
            (
                radioSetButton3,        // Field name in mainWindow object 
                "Radio Set Button3",    // Caption for push button
                310,                    // x position
                90,                     // y position
                200,                    // width
                25,                     // height
                NULL                    // "on click" event handler
            ); 
       


        endRadioSet;
       
       
        // Create some buttons on the form to demonstrate
        // each of the widgets that wForm supports:
       
        widget
        (
            button,             // Field name in mainWindow object
            wPushButton,        // Push button type.     
            "Push Button",      // Caption for push button
            10,                 // x position
            10,                 // y position
            125,                // width
            25,                 // height
            onClick             // "on click" event handler
        ); 
       
        widget
        (
            button2,            // Field name in mainWindow object       
            wPushButton,        // Push button type.     
            "Hide",             // Caption for push button
            150,                // x position
            10,                 // y position
            125,                // width
            25,                 // height
            onClick2            // "on click" event handler
        );
         
        widget   
        (
            checkBox,           // Field name in mainWindow object     
            wCheckBox,          // Checkbox type.     
            "Check Box",        // Caption for check box
            10,                 // x position
            50,                 // y position
            125,                // width
            25,                 // height
            onCheck             // "on click" event handler
        );
         
        widget   
        (
            checkBox3,          // Field name in mainWindow object     
            wCheckBox3,         // 3-state Checkbox type.     
            "Check Box3",       // Caption for check box
            10,                 // x position
            90,                 // y position
            125,                // width
            25,                 // height
            onCheck3            // "on click" event handler
        );
         
        widget
        (
            radioButton,        // Field name in mainWindow object 
            wRadioButton,       // Radio button type.     
            "Radio Button",     // Caption for radio button
            10,                 // x position
            130,                // y position
            125,                // width
            25,                 // height
            onPush              // "on click" event handler
        ); 
       
        widget   
        (
            checkBoxLT,         // Field name in mainWindow object     
            wCheckBoxLT,        // Left text Checkbox type.     
            "Check Box LT",     // Caption for check box   
            150,                // x position
            50,                 // y position
            125,                // width
            25,                 // height
            onCheck             // "on click" event handler
        ); 
       
        widget   
        (
            checkBox3LT,        // Field name in mainWindow object     
            wCheckBoxLT,        // 3-state Left text Checkbox type.     
            "Check Box3 LT",    // Caption for check box   
            150,                // x position
            90,                 // y position
            125,                // width
            25,                 // height
            onCheck3            // "on click" event handler
        );
         
        widget
        (
            radioButtonLT,      // Field name in mainWindow object 
            wRadioButton,       // 3-state Radio button type.     
            "Radio Button LT",  // Caption for radio button
            150,                // x position
            130,                // y position
            125,                // width
            25,                 // height
            onPush              // "on click" event handler
        ); 
       
   
    ///////////////////////////////////////////////////////////////////////////
    //                                                                       //
    //                           T A B   # 2                                 //
    //                                                                       //
    ///////////////////////////////////////////////////////////////////////////
   
    wTab( tab2, "tab2", NULL, w.LTGRAY_BRUSH );
         
        widget
        (
            groupBox,           // Field name in mainWindow object
            wGroupBox,          // Field type     
            "Enter Password",   // Caption for group box
            10,                 // x position
            10,                 // y position
            250,                // width
            50                  // height
        );
       
        widget
        (
            passwdBox,          // Field name in mainWindow object
            wPasswdBox,         // Field type     
            "",                 // Initial text for password box
            15,                 // x position
            30,                 // y position
            240,                // width
            25,                 // height
            onChange            // onChange handler
        );
       
        widget
        (
            editBox,            // Field name in mainWindow object
            wEditBox,           // Field type     
            "Edit Box",         // Initial text for edit box
            275,                // x position
            30,                 // y position
            250,                // width
            25,                 // height
            onChange            // onChange handler
        );
       
        widget
        (
            groupBox2,          // Field name in mainWindow object
            wGroupBox,          // Field type     
            "Text Editor",      // Caption for group box
            10,                 // x position
            100,                // y position
            250,                // width
            200                 // height
        );
       
        widget
        (
            textEdit,           // Field name in mainWindow object
            wTextEdit,          // Field type     
            "",                 // Initial Text
            15,                 // x position
            125,                // y position
            240,                // width
            160,                // height
            onChange
        );
       

endwForm