15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Masked edit control

spillman!bworthen@uunet.uu.net
Wednesday, October 16, 1996

Environment: VC++ 4.2, Win NT 4.0

     I had a question regarding Microsoft's Masked Edit OLE control 
that ships with VC++ 4.2.  I'll outline what I am trying to do and then I'll 
present my question.  

     I need to have a control that provides all the funtionality of the OLE 
masked edit from Microsoft, plus some other functionality (such as 
padding, doing some special validity checking, etc.).  So, I started by 
inserting the OLE control from the Component Gallery into my test project.  
This created the proxy class "CMsmask" (along with a couple of other 
classes).  I read somewhere that, rather than hacking up the proxy 
class, it is safer to create my own class, that inherits from CMsmask, 
and add to this class the extra funtionality that I need.  So, I created my 
own class that inherits from CMsmask (in the normal C++ way), and I 
kept this class to a bare minimum (a constructor, destructor, etc.).
     Now, after having done all this, I went to my dialog's "OnInitDialog" 
method.  In this method I created my own control within the dialog 
using the following code:

BOOL COletestDlg::OnInitDialog()
{
   .......
   .......
   m_myMaskEdit = new CMyMaskEdit;  // Inherits from CMsmask

   m_myMaskEdit->Create(........);

   // Set various properties for the control:
   .......
   m_myMaskEdit->SetFontBold(FALSE);   // TRUE or FALSE
   m_myMaskEdit->SetAppearance(1);     // 0 = Flat, 1 = 3D
   m_myMaskEdit->SetMask(_T("###-##-####"));
   .......
   .......
}

     The problem that I'm having is that my control does not have the 
3D look that it should when I call "SetAppearance" with a parameter 
of 1.  The control still has the flat look.
     Now for my question.  My question is three-fold:

1)   Am I going about solving my problem in the correct manner?  
In other words, is it okay to create my own class, that inherits from 
an OLE control proxy class, to add my own functionality, etc.?  Is there 
a better way?

2)   Can anyone see any limitations to this plan?  In other words, will 
there be any limitations to setting up my own message handlers and 
data exchange, etc. for my control?  For example, detecting when the 
focus is leaving my control so that I can do some validity checking 
(along with other things) at that point?  

3)   Why can't I get the 3D look for my control using SetAppearance?

     Any help would be greatly appreciated!!  Send any replies to either 
this group or to the following e-mail address:  bworthen@spillman.com

		Thanks,
			Brad
			bworthen@spillman.com



Sanjay Chouksey -- sanjay@mediaway.com
Friday, October 18, 1996

Hi,

You are not setting the border. 3D looks go to the border !! :)

Sanjay

> BOOL COletestDlg::OnInitDialog()
> {
>    .......
>    .......
>    m_myMaskEdit = new CMyMaskEdit;  // Inherits from CMsmask
> 
>    m_myMaskEdit->Create(........);
> 
>    // Set various properties for the control:
>    .......
>    m_myMaskEdit->SetFontBold(FALSE);   // TRUE or FALSE
>    m_myMaskEdit->SetAppearance(1);     // 0 = Flat, 1 = 3D
>    m_myMaskEdit->SetMask(_T("###-##-####"));
>   //$$$$$$$$$$$ here $$$$$$$$$$$$$$$$$$$
>    m_myMaskEdit->SetBorder(1));	// 1= single, 0=none
>   //$$$$$$$$$$$ there $$$$$$$$$$$$$$$$$$$
>    .......
>    .......
> }
> 
>      The problem that I'm having is that my control does not have the 
> 3D look that it should when I call "SetAppearance" with a parameter 
> of 1.  The control still has the flat look.





| Вернуться в корень Архива |