Display bitmap using CStatic control.

Abstract

This article is useful for those who want to use picture control and show bitmap.

What is a dialog?

Dialog is a small window where you can place controls like as text field, picture control, combo box etc.
Dialog based application template is the simplest application. we can show some data in dialog and also can take input from user using dialog. Dialog can be modal and modelless.

How to create dialog based template project?

Just move to File->New->Project and then select to MFC (MFC App Wizard) and then select dialog based template.
you will already have some classes created by default using dialog based template.
You will have header files , resource files and source files.
Example:
This example have one dialog with two controls, one is picture control and anothe is button with name "Browser".
we will browse the directory from opening a file dialog window and will select a specific image file and then will show in picture control.
Suppose i assigned the project name "DialogImage". You will have following classes with name:

Header Files
1. DialogImage.h
2. DialogImageDlg.h
3. Resource.h
4. stdafx.h
Resource Files
1. DialogImage.ico
2. DialogImage.rc
3. DialogImage.rc2
Source Files
1. DialogImage.cpp
2. DialogImageDlg.cpp
3. stdafx.cpp
ReadMe.txt

(DialogImage.h, DialogImage.cpp) :-

CWinApp derived class. There is a InitInstance method which initialize the dialog and DoModal().
(DialogImageDlg.h, DialogImageDlg.cpp):-

CDialog derived class.

In resource editor , select dialog editor and just need to drag and drop picture control and button and assign caption "Broswer". After that add event handler to browser in CDialog derived class. And also add varibale for picture control.
Following is the .h and .cpp file for Dialog derived class and please see event handler for borwser button which show the file dialog and will allow to select jpg files and show into the picture control on dialog.

// DialogImageDlg.h : header file
#pragma once
#include "afxwin.h"
// CDialogImageDlg dialog
class CDialogImageDlg : public CDialog
{
// Construction
public: CDialogImageDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
enum { IDD = IDD_DIALOGIMAGE_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedBrowser();
public:
CStatic m_picture;
};


DialogImageDlg.cpp
Sample code not showing the deafult methods created by wizard. Just showing the browser button event handler. // DialogImageDlg.cpp : implementation file
//

#include "stdafx.h"
#include <atlimage.h>
#include "DialogImage.h"
#include "DialogImageDlg.h"

void CDialogImageDlg::OnBnClickedBrowser()
{
CFileDialog JPGDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_FILEMUSTEXIST, L"JPG Files(*.jpg)|*.jpg||",this);
if( JPGDlg.DoModal ()==IDOK)
{
CString m_strPathname = JPGDlg.GetPathName();
CImage img;
img.Load (m_strPathname);
CBitmap bitmap;
bitmap.Attach(img.Detach());
m_picture.SetBitmap(bitmap);
}
}


Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Here are the five core principles for monetizing your storage like never before and winning more customer applications than ever for your cloud and hosted services. These are your keys to the next generation data center.

  • Despite the popularity of cloud software, many companies are reluctant to move their contact centers to the cloud. This white paper breaks down cloud architecture, the benefits of cloud and the difference between cloud and on-premise systems. It's a helpful resource for companies who are curious about cloud contact center software but have reservations. It offers practical explanations, extensive research and a guide to selecting the right cloud contact center vendor.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date