Click here to Skip to main content
Click here to Skip to main content

VB Like InputBox for MFC

, 14 Feb 2003
Rate this:
Please Sign up or sign in to vote.
InputBox for MFC without Dialog Resource.

Introduction

I have been developing softwares both in VB & VC, and like many of you, wanted to get user input using something like VB's InputBox. For this, I searched at CodeProject and found some solutions (thanx to them). The problem was: all of them used some dialog resources to solve the problem that ultimately increases the size of the application.

Solution

I am presenting the InputBox by sub-classing the MessageBox provided by MFC. Last week, I found the "Do not ask again" MessageBoxes by Nicolas Bonamy; that discusses the sub-classing of MessageBox to create a CheckBox. I used the same idea to present an EditBox to get the user input by popping the MessageBox. Thanx Nic for the idea.

Sub-classing MessageBox

This relies on MFC hooking through the AfxHookWindowCreate() function. With this, we redirect the MessageBox messages to us and therefore are able to catch (once more) WM_INITDIALOG. Here, we resize the window, add the EditBox and so on...

The big advantage is that our class is in a way the MessageBox itself with an added functionality of Edit Control; and hence the events from Edit control are handled in our class.

Using the code

To use the CInputBox, simply:

  • Add the InpuBox.h & InputBox.cpp to your project
  • Instantiate the CInputBox object
  • Call the Show method with a string.
  • When the call to Show() returns, the provided string will contain the user input.
//
CInputBox theInputBox(this);
CString strUserInput;
theInputBox.Show("Please Enter Some Text Here...", strUserInput);

  MessageBox(strUserInput);

Enhancement/Extension

I think you can further enhance the class by setting some methods to implement your specific needs like:

  • Only Numeric set ES_NUMBER
  • Special characters by catching EN_CHANGE
  • More than one Edits for different inputs.

Credits

My sincere thanx to:

  • Nicolas Bonamy: whose code inspired me for doing such an implementation.
  • My friend Sadiq: who always helps me whenever I am stuck in problems.
  • My brother Ubaid: who helped me in writing & discussing the code.
  • Most of all, my "teacher" MSDN: you know most of us are nothing without it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Muneeb R. Baig
Chief Technology Officer
Pakistan Pakistan
Just learning.
http://about.me/muneebrbaig
Follow on   Twitter   LinkedIn

Comments and Discussions

 
QuestionLicensing terms PinmemberScott Bartine7-Dec-11 4:05 
AnswerRe: Licensing terms PinmemberMuneeb R. Baig7-Dec-11 5:16 
QuestionHow to use in C PinsussNajamulhaque17-Feb-03 1:54 
AnswerRe: How to use in C PineditorNishant S17-Feb-03 8:53 
GeneralNot on Win 98 PinmemberPJ Arends16-Feb-03 6:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140814.1 | Last Updated 15 Feb 2003
Article Copyright 2003 by Muneeb R. Baig
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid