Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. CEdit SetPasswordChar SetFont [modified]

CEdit SetPasswordChar SetFont [modified]

Scheduled Pinned Locked Moved C / C++ / MFC
helpdata-structuresquestion
17 Posts 6 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Taulie

    Hello, i've a problem with a subclassed CEdit on WindowsCE 5.0. If i use SetPasswordChar and SetFont in the same subclassed CEdit it generates an acces violation [Stack fault]: Thread=9a431400 Proc=98328d20 'xxxxxx.exe' AKY=00004001 PC=0017ba6c(xxxxxx.exe+0x0016ba6c) RA=000318e8(xxxxxx.exe+0x000218e8) BVA=1e2a1ee4 FSR=00000007 my Code: ... if(edit->SubclassDlgItem(IDC_EDIT1, this)){ edit->SetFont(m_Font, FALSE); edit->SetPasswordChar(0x25CF); // --> stack fault } ... If i don't use SetFont OR SetPasswordChar it works fine... whats wrong ??? can anybody help me? Thanx for replys... edit: // Initialization Controls.edit2 = new CMyEdit(); Controls.edit2->__SubClassControl(this, IDC_EDIT2); Controls.edit2->__SetMaxTextLength(9); //Controls.edit2->SetPasswordChar('*'); // --> stack fault Controls.edit2->SetPasswordChar(0x25CF); // --> stack fault // Control-Code BOOL CMyEdit::__SubClassControl(CMyDialog *pParent, int nID) { // subclassing per SubclassDlgItem is okay, SubclassWindow does not work m_pParent = pParent; m_nID = nID; BOOL ret = SubclassDlgItem(m_nID, m_pParent); // changing FontSize to parentfont and the heigth of the Control LOGFONT lf; if(m_pParent->GetFont()->GetLogFont(&lf) != 0){ // m_Font is a derived class from CFont and an Item of my CMyEdit for better Fonthandling // if i use CFont the same Problem exist with SetPasswordChar (isn't the reason) m_Font->_SetLogFont(lf); if(m_bFontResizing == TRUE){ CRect rect; GetClientRect(&rect); rect.DeflateRect(2,2,2,2); m_Font->_SetHeight(rect.Height()); } SetFont((CFont*)m_Font, FALSE); } return ret; } void CMyEdit::__SetMaxTextLength(int maxLen) { m_maxLen = maxLen; // del mask m_Mask = _T(""); }

    modified on Friday, January 23, 2009 7:14 AM

    D Offline
    D Offline
    David Crow
    wrote on last edited by
    #8

    grandmasta1 wrote:

    If i don't use SetFont...it works fine...

    Since the edit control is just going to show a * anyway, why does it need a different font?

    "Love people and use things, not love things and use people." - Unknown

    "The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch

    T 1 Reply Last reply
    0
    • D David Crow

      grandmasta1 wrote:

      If i don't use SetFont...it works fine...

      Since the edit control is just going to show a * anyway, why does it need a different font?

      "Love people and use things, not love things and use people." - Unknown

      "The brick walls are there for a reason...to stop the people who don't want it badly enough." - Randy Pausch

      T Offline
      T Offline
      Taulie
      wrote on last edited by
      #9

      i change the fontsize to fit in the control...

      T 1 Reply Last reply
      0
      • T Taulie

        i change the fontsize to fit in the control...

        T Offline
        T Offline
        Taulie
        wrote on last edited by
        #10

        i change the fontsize to fit in the control... e.g. from size 8 to 15 - and the oher edit controls have size 15 looks not so fine, if the passwordcontrol has only size 8 if i use '*' as default, the access violation occurs if i set a new font. if the flag ES_PASSWORD or a PassworChar is set and i try to set a new font the access violation is always generated... i have no idea...

        1 Reply Last reply
        0
        • T Taulie

          i try it, but it has no effect... the message EM_SETPASSWORDCHAR raises the error, mfc is not the reason...

          C Offline
          C Offline
          Code o mat
          wrote on last edited by
          #11

          So let me get this clear:

          edit.SetFont(somefont);
          edit.SetPasswordChar(whatever); <- it crashes here

          crashes and

          edit.SetPasswordChar(whatever); <- it crashes here again, so SetFont never gets called
          edit.SetFont(somefont);

          crashes too but

          edit.SetPasswordChar(whatever); <- works ok, no SetFont around

          works. That is very strange, i don't really see the great difference between the later two cases since SetFont never gets called at all in either case.

          > The problem with computers is that they do what you tell them to do and not what you want them to do. < > Life: great graphics, but the gameplay sux. <

          T 1 Reply Last reply
          0
          • C Code o mat

            So let me get this clear:

            edit.SetFont(somefont);
            edit.SetPasswordChar(whatever); <- it crashes here

            crashes and

            edit.SetPasswordChar(whatever); <- it crashes here again, so SetFont never gets called
            edit.SetFont(somefont);

            crashes too but

            edit.SetPasswordChar(whatever); <- works ok, no SetFont around

            works. That is very strange, i don't really see the great difference between the later two cases since SetFont never gets called at all in either case.

            > The problem with computers is that they do what you tell them to do and not what you want them to do. < > Life: great graphics, but the gameplay sux. <

            T Offline
            T Offline
            Taulie
            wrote on last edited by
            #12

            not directly... edit.SetFont(somefont); edit.SetPasswordChar(whatever); <- it crashes here edit.SetPasswordChar(whatever); edit.SetFont(somefont);<- it crashes here edit.SetPasswordChar(whatever); <- works ok, no SetFont around i check now if the subclassing is the reason... wait a moment...

            C 1 Reply Last reply
            0
            • T Taulie

              not directly... edit.SetFont(somefont); edit.SetPasswordChar(whatever); <- it crashes here edit.SetPasswordChar(whatever); edit.SetFont(somefont);<- it crashes here edit.SetPasswordChar(whatever); <- works ok, no SetFont around i check now if the subclassing is the reason... wait a moment...

              C Offline
              C Offline
              Code o mat
              wrote on last edited by
              #13

              Ah, i see. Where do you perform all this? I mean, the subclassinc of the edit and the rest? I mean, in what method, at what event...?

              > The problem with computers is that they do what you tell them to do and not what you want them to do. < > Life: great graphics, but the gameplay sux. <

              T 1 Reply Last reply
              0
              • C Code o mat

                Ah, i see. Where do you perform all this? I mean, the subclassinc of the edit and the rest? I mean, in what method, at what event...?

                > The problem with computers is that they do what you tell them to do and not what you want them to do. < > Life: great graphics, but the gameplay sux. <

                T Offline
                T Offline
                Taulie
                wrote on last edited by
                #14

                in OnInitDialog... i've rewritten a little class to encapsulate this problem, it looks like a WindowsCE-Problem... in Win32 works fine... edit: give up... in pocketpc-emulator it works always fine :-| it must be devicedependend or a devicemistake...

                1 Reply Last reply
                0
                • T Taulie

                  MSDN says the Function has on effect in multineedit... i test it... edit: tested, but no effect

                  K Offline
                  K Offline
                  krmed
                  wrote on last edited by
                  #15

                  Here's a quote from MSDN: Remarks When a password character is set, that character is displayed for each character the user types. This member function has no effect on a multiple-line edit control. When the SetPasswordChar member function is called, CEdit will redraw all visible characters using the character specified by ch. If the edit control is created with the ES_PASSWORD style, the default password character is set to an asterisk (*). This style is removed if SetPasswordChar is called with ch set to 0. For more information, see EM_SETPASSWORDCHAR in the Platform SDK.

                  Karl - WK5M PP-ASEL-IA (N43CS) PGP Key: 0xDB02E193 PGP Key Fingerprint: 8F06 5A2E 2735 892B 821C 871A 0411 94EA DB02 E193

                  1 Reply Last reply
                  0
                  • P prasad_som

                    grandmasta1 wrote:

                    edit->SetPasswordChar(0x25CF); // --> stack fault

                    I'm not sure how Windows CE treats char. But try using some simple char like '*' first.

                    _ Offline
                    _ Offline
                    _Superman_
                    wrote on last edited by
                    #16

                    Windows CE only supports Unicode. So all string MUST be L"" and all characters are 2 bytes.

                    «_Superman_»

                    T 1 Reply Last reply
                    0
                    • _ _Superman_

                      Windows CE only supports Unicode. So all string MUST be L"" and all characters are 2 bytes.

                      «_Superman_»

                      T Offline
                      T Offline
                      Taulie
                      wrote on last edited by
                      #17

                      i know... 0x25CF are 2 bytes, or not? ans strings with L"" or _T("") or TEXT("")... there is a single Character as parameter required in TCHAR-Format... the app works in emulator, it must be devicedependend... on an other device the app has no problem and works... thanx

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups