Gui In Dev C%2b%2b Tutorial
Create apps with graphical user interfaces in MATLAB
Graphical user interfaces (GUIs), also known as apps, provide point-and-click control of your software applications, eliminating the need for others to learn a language or type commands in order to run the application. You can share apps both for use within MATLAB and also as standalone desktop or web apps.
You can choose from the following three ways to create an app in MATLAB:
- Convert a script into a simple app: Choose this option when you want to share a script with students or colleagues and allow them to modify variables using interactive controls.
- Create an app interactively: Choose this option when you want to create a more sophisticated app using a drag-and-drop environment to build the user interface.
- Create an app programmatically: Choose this option when you want to create an app’s user interface by writing the code yourself.
Use the Live Editor to convert a script into a simple app that has interactive controls allowing others to experiment with variables in your code. Add sliders, dropdowns, edit fields, and buttons without writing any code. Specify what parts of the script will run when a value is changed. Hide the code to create simple apps and dashboards.
Personally I use Dev C and this will be the compiler I use in this tutorial, it has an easy to use GUI and can compile directly from this interface opening in a separate console screen. C is an object orientated programming language in other words it can have several parts known as classes or object which can be called by a driver program. A Basic C GUI tutorial. Maybe if i'm bored one day, I will post a more advanced tutorial covering text, buttons and other l33t things. A Shout out To: Xander, Barnzey, Blademaster, soad, jackhole, njkt, Napster, nofrillz and all the other folks I missed out especially the guys on. It's easy to create a.NET Windows GUI in C. See the following tutorial from MSDN. You can download everything you need (Visual C Express) for free. Of course you tie yourself to.NET, but if you're just playing around or only need a Windows application you'll be fine (most people still have Windows.for now).
This tutorial shows you how to build an application using wx-Devcpp and wxWidgets. Wx-Devcpp is an extension to Dev-C, an open-source IDE for C/C. Wx-Devcpp adds a visual form designer that lets you easily create dialogs and frames and layout controls within the dialogs and frames. WxWidgets is an open-source C cross-platform GUI framework. Step-by-step instructional guides for hands-on learning of programming in Unreal Engine. Dev-C is a free IDE for Windows that uses either MinGW or TDM-GCC as underlying compiler. Originally released by Bloodshed Software, but abandoned in 2006, it has recently been forked by Orwell, including a choice of more recent compilers.
You can share your live script with others to use in MATLAB or MATLAB Online.
Interactive controls are good for creating an easy interface to a live script. If you want to design a more sophisticated user interface or want more control over the app’s behavior, you should consider building a standalone app using App Designer.
Learn More
- Interactive Controls in the Live Editor (2:15) - Video
- MATLAB Live Editor - Overview
- Live Script Gallery - Example Live Scripts from the Community
- Share and Collaborate Using MATLAB Drive - Documentation
Create an App Interactively
App Designer is an interactive environment that integrates the two primary tasks of app building: laying out the visual components and programming the app’s behavior. It allows you to quickly move between visual design in the canvas and developing code in the MATLAB editor.
You can share your app with others to use in MATLAB on the desktop or in a web browser using MATLAB Online. App Designer apps can also be packaged for installation into the MATLAB Apps tab. To share with non-MATLAB users, you can compile apps into standalone desktop and web apps using MATLAB Compiler.
App Designer is good for interactively designing your layout and programming its behavior in one environment. If you prefer, you can program the entire app yourself, including the user interface.
Learn More
- MATLAB App Designer - Overview
- Getting Started with App Designer (4:49) - Video
- Component Gallery - Overview
- Share and Collaborate Using MATLAB Drive - Overview
- Package Apps in App Designer - Documentation
- Getting Started: Standalone Applications Using MATLAB Compiler (3:58) - Video
For added control over design and development, you can also use MATLAB functions to define the layout and behavior of your app. In this approach, you create a figure to serve as the container for your user interface and add components to it programmatically.
A custom app with a GUI in MATLAB.
You can share your app with others to use in MATLAB on the desktop or in a web browser using MATLAB Online. Apps can also be packaged for installation into the MATLAB Apps tab. To share with non-MATLAB users, you can compile your apps into standalone desktop apps using MATLAB Compiler.
Learn More
- Develop Apps Programmatically Using uifigure - Documentation
- Share and Collaborate Using MATLAB Drive - Overview
- Getting Started: Standalone Applications Using MATLAB Compiler (3:58) - Video
Additional Resources
- MATLAB Apps (1:45) - Video
- Writing Apps in MATLAB - Article
- User-Contributed Apps with Custom GUIs - File Exchange
- Building Image Processing Graphical User Interfaces with Modular Tools - Documentation
- Data Visualization and User Interfaces - Consulting Services
- Comparing GUIDE and App Designer - Overview
See also: MATLAB Compiler, MATLAB apps
- C++ Basics
- C++ Object Oriented
- C++ Advanced
- C++ Useful Resources
- Selected Reading
What is CGI?
The Common Gateway Interface, or CGI, is a set of standards that define how information is exchanged between the web server and a custom script.
The CGI specs are currently maintained by the NCSA and NCSA defines CGI is as follows −
The Common Gateway Interface, or CGI, is a standard for external gateway programs to interface with information servers such as HTTP servers.
The current version is CGI/1.1 and CGI/1.2 is under progress.
Web Browsing
To understand the concept of CGI, let's see what happens when we click a hyperlink to browse a particular web page or URL.
Your browser contacts the HTTP web server and demand for the URL ie. filename.
Web Server will parse the URL and will look for the filename. If it finds requested file then web server sends that file back to the browser otherwise sends an error message indicating that you have requested a wrong file.
Web browser takes response from web server and displays either the received file or error message based on the received response.
However, it is possible to set up the HTTP server in such a way that whenever a file in a certain directory is requested, that file is not sent back; instead it is executed as a program, and produced output from the program is sent back to your browser to display.
The Common Gateway Interface (CGI) is a standard protocol for enabling applications (called CGI programs or CGI scripts) to interact with Web servers and with clients. These CGI programs can be a written in Python, PERL, Shell, C or C++ etc.
CGI Architecture Diagram
The following simple program shows a simple architecture of CGI −
Web Server Configuration
Before you proceed with CGI Programming, make sure that your Web Server supports CGI and it is configured to handle CGI Programs. All the CGI Programs to be executed by the HTTP server are kept in a pre-configured directory. This directory is called CGI directory and by convention it is named as /var/www/cgi-bin. By convention CGI files will have extension as .cgi, though they are C++ executable.
By default, Apache Web Server is configured to run CGI programs in /var/www/cgi-bin. If you want to specify any other directory to run your CGI scripts, you can modify the following section in the httpd.conf file −
Here, I assume that you have Web Server up and running successfully and you are able to run any other CGI program like Perl or Shell etc.
First CGI Program
Consider the following C++ Program content −
Compile above code and name the executable as cplusplus.cgi. This file is being kept in /var/www/cgi-bin directory and it has following content. Before running your CGI program make sure you have change mode of file using chmod 755 cplusplus.cgi UNIX command to make file executable.
My First CGI program
The above C++ program is a simple program which is writing its output on STDOUT file i.e. screen. There is one important and extra feature available which is first line printing Content-type:text/htmlrnrn. This line is sent back to the browser and specify the content type to be displayed on the browser screen. Now you must have understood the basic concept of CGI and you can write many complicated CGI programs using Python. A C++ CGI program can interact with any other external system, such as RDBMS, to exchange information.
HTTP Header
The line Content-type:text/htmlrnrn is a part of HTTP header, which is sent to the browser to understand the content. All the HTTP header will be in the following form −
There are few other important HTTP headers, which you will use frequently in your CGI Programming.
Sr.No | Header & Description |
---|---|
1 | Content-type: A MIME string defining the format of the file being returned. Example is Content-type:text/html. |
2 | Expires: Date The date the information becomes invalid. This should be used by the browser to decide when a page needs to be refreshed. A valid date string should be in the format 01 Jan 1998 12:00:00 GMT. |
3 | Location: URL The URL that should be returned instead of the URL requested. You can use this filed to redirect a request to any file. |
4 | Last-modified: Date The date of last modification of the resource. |
5 | Content-length: N The length, in bytes, of the data being returned. The browser uses this value to report the estimated download time for a file. |
6 | Set-Cookie: String Set the cookie passed through the string. |
CGI Environment Variables
All the CGI program will have access to the following environment variables. These variables play an important role while writing any CGI program.
Sr.No | Variable Name & Description |
---|---|
1 | CONTENT_TYPE The data type of the content, used when the client is sending attached content to the server. For example file upload etc. |
2 | CONTENT_LENGTH The length of the query information that is available only for POST requests. |
3 | HTTP_COOKIE Returns the set cookies in the form of key & value pair. |
4 | HTTP_USER_AGENT The User-Agent request-header field contains information about the user agent originating the request. It is a name of the web browser. |
5 | PATH_INFO The path for the CGI script. |
6 | QUERY_STRING The URL-encoded information that is sent with GET method request. |
7 | REMOTE_ADDR The IP address of the remote host making the request. This can be useful for logging or for authentication purpose. |
8 | REMOTE_HOST The fully qualified name of the host making the request. If this information is not available then REMOTE_ADDR can be used to get IR address. |
9 | REQUEST_METHOD The method used to make the request. The most common methods are GET and POST. |
10 | SCRIPT_FILENAME The full path to the CGI script. |
11 | SCRIPT_NAME The name of the CGI script. |
12 | SERVER_NAME The server's hostname or IP Address. |
13 | SERVER_SOFTWARE The name and version of the software the server is running. |
Here is small CGI program to list out all the CGI variables.
C++ CGI Library
For real examples, you would need to do many operations by your CGI program. There is a CGI library written for C++ program which you can download from ftp://ftp.gnu.org/gnu/cgicc/ and follow the steps to install the library −
You can check related documentation available at ‘C++ CGI Lib Documentation.
GET and POST Methods
You must have come across many situations when you need to pass some information from your browser to web server and ultimately to your CGI Program. Most frequently browser uses two methods to pass this information to web server. These methods are GET Method and POST Method.
Passing Information Using GET Method
The GET method sends the encoded user information appended to the page request. The page and the encoded information are separated by the ? character as follows −
The GET method is the default method to pass information from browser to web server and it produces a long string that appears in your browser's Location:box. Never use the GET method if you have password or other sensitive information to pass to the server. The GET method has size limitation and you can pass upto 1024 characters in a request string.
When using GET method, information is passed using QUERY_STRING http header and will be accessible in your CGI Program through QUERY_STRING environment variable.
You can pass information by simply concatenating key and value pairs alongwith any URL or you can use HTML <FORM> tags to pass information using GET method.
Simple URL Example: Get Method
Here is a simple URL which will pass two values to hello_get.py program using GET method.
/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALIBelow is a program to generate cpp_get.cgi CGI program to handle input given by web browser. We are going to use C++ CGI library which makes it very easy to access passed information −
Now, compile the above program as follows −
Generate cpp_get.cgi and put it in your CGI directory and try to access using following link −
/cgi-bin/cpp_get.cgi?first_name=ZARA&last_name=ALIThis would generate following result −
Simple FORM Example: GET Method
Here is a simple example which passes two values using HTML FORM and submit button. We are going to use same CGI script cpp_get.cgi to handle this input.
Here is the actual output of the above form. You enter First and Last Name andthen click submit button to see the result.
Passing Information Using POST Method
A generally more reliable method of passing information to a CGI program is the POST method. This packages the information in exactly the same way as GET methods, but instead of sending it as a text string after a ? in the URL it sends it as a separate message. This message comes into the CGI script in the form of the standard input.
The same cpp_get.cgi program will handle POST method as well. Let us take same example as above, which passes two values using HTML FORM and submit button but this time with POST method as follows −
Here is the actual output of the above form. You enter First and Last Name andthen click submit button to see the result.
Passing Checkbox Data to CGI Program
Checkboxes are used when more than one option is required to be selected.
Here is example HTML code for a form with two checkboxes −
Gui In Dev C 2b 2b Tutorials
The result of this code is the following form −
Below is C++ program, which will generate cpp_checkbox.cgi script to handle input given by web browser through checkbox button.
Passing Radio Button Data to CGI Program
Radio Buttons are used when only one option is required to be selected.
Here is example HTML code for a form with two radio button −
The result of this code is the following form −
Below is C++ program, which will generate cpp_radiobutton.cgi script to handle input given by web browser through radio buttons.
Passing Text Area Data to CGI Program
TEXTAREA element is used when multiline text has to be passed to the CGI Program.
Here is example HTML code for a form with a TEXTAREA box −
The result of this code is the following form −
Below is C++ program, which will generate cpp_textarea.cgi script to handle input given by web browser through text area.
Passing Drop down Box Data to CGI Program
Drop down Box is used when we have many options available but only one or two will be selected.
Here is example HTML code for a form with one drop down box −
The result of this code is the following form −
Below is C++ program, which will generate cpp_dropdown.cgi script to handle input given by web browser through drop down box.
Using Cookies in CGI
HTTP protocol is a stateless protocol. But for a commercial website it is required to maintain session information among different pages. For example one user registration ends after completing many pages. But how to maintain user's session information across all the web pages.
In many situations, using cookies is the most efficient method of remembering and tracking preferences, purchases, commissions, and other information required for better visitor experience or site statistics.
How It Works
Your server sends some data to the visitor's browser in the form of a cookie. The browser may accept the cookie. If it does, it is stored as a plain text record on the visitor's hard drive. Now, when the visitor arrives at another page on your site, the cookie is available for retrieval. Once retrieved, your server knows/remembers what was stored.
Cookies are a plain text data record of 5 variable-length fields −
Expires − This shows date the cookie will expire. If this is blank, the cookie will expire when the visitor quits the browser.
Domain − This shows domain name of your site.
Path − This shows path to the directory or web page that set the cookie. This may be blank if you want to retrieve the cookie from any directory or page.
Secure − If this field contains the word 'secure' then the cookie may only be retrieved with a secure server. If this field is blank, no such restriction exists.
Name = Value − Cookies are set and retrieved in the form of key and value pairs.
Setting up Cookies
It is very easy to send cookies to browser. These cookies will be sent along with HTTP Header before the Content-type filed. Assuming you want to set UserID and Password as cookies. So cookies setting will be done as follows
From this example, you must have understood how to set cookies. We use Set-Cookie HTTP header to set cookies.
Here, it is optional to set cookies attributes like Expires, Domain, and Path. It is notable that cookies are set before sending magic line 'Content-type:text/htmlrnrn.
Compile above program to produce setcookies.cgi, and try to set cookies using following link. It will set four cookies at your computer −
Gui In Dev C 2b 2b Tutorial Pdf
Retrieving Cookies
It is easy to retrieve all the set cookies. Cookies are stored in CGI environment variable HTTP_COOKIE and they will have following form.
Here is an example of how to retrieve cookies.
Now, compile above program to produce getcookies.cgi, and try to get a list of all the cookies available at your computer −
This will produce a list of all the four cookies set in previous section and all other cookies set in your computer −
File Upload Example
To upload a file the HTML form must have the enctype attribute set to multipart/form-data. The input tag with the file type will create a 'Browse' button.
The result of this code is the following form −
Note − Above example has been disabled intentionally to stop people uploading files on our server. But you can try above code with your server.
Here is the script cpp_uploadfile.cpp to handle file upload −
The above example is for writing content at cout stream but you can open your file stream and save the content of uploaded file in a file at desired location.
Hope you have enjoyed this tutorial. If yes, please send us your feedback.