|
Hey,
I have no idea why this isn't working but I am trying to simply toggle between ES_PASSWORD on a edit control with in a dialog. I have tried Get/SetWindowLong and ModifyStyle and neither seem to work... Here is a sniplet of my code.
What am I doing wrong?
void CActivationDlg::OnBnClickedCMask()
{
UpdateData(TRUE);
m_bMask = m_bMask ? TRUE : FALSE;
DWORD dwStyle = GetWindowLong(m_cKey.GetSafeHwnd(), GWL_STYLE);
if(!m_bMask)
{
TRACE("Remove PW mask\n");
dwStyle &= ~ES_PASSWORD;
SetWindowLong(m_cKey.GetSafeHwnd(),
GWL_STYLE,
dwStyle);
}
else
{
TRACE("Add PW mask\n");
dwStyle |= ES_PASSWORD;
SetWindowLong(m_cKey.GetSafeHwnd(),
GWL_STYLE,
dwStyle);
}
m_cKey.Invalidate();
UpdateData(FALSE);
}
Thanks in advance!
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
Are you sure the ES_PASSWORD style can be un/set at runtime? Some styles are unchangeable.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
You might be right... I did notice on MSDN that some of the other styles state if changes need to be made after creation use the SetWindowLong function, unfortunately it doesn't say anything about ES_PASSWORD, it probably can't be changed with ease...
DOH!
Thanks,
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
Would it be feasible to create two of the same controls, one with the style and one without? Then at runtime you could just show/hide the appropriate control.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
Yeah I could have just done that... Instead I have removed the old control and created a new one. If anyone is interested this is the code. Most of this code is from the SuperPad MSDN example for changing word wrap...
void CActivationDlg::OnBnClickedCMask()
{
UpdateData(TRUE);
m_bMask = m_bMask ? TRUE : FALSE;
CFont* pFont = m_cKey.GetFont();
int nLen = m_strKey.GetLength();
TCHAR* pSaveText = new TCHAR[m_strKey.GetLength()+1];
GetWindowText(pSaveText, nLen+1);
DWORD dwStyle = GetWindowLong(m_cKey.GetSafeHwnd(), GWL_STYLE);
if(!m_bMask)
dwStyle &= ~ES_PASSWORD;
else
dwStyle |= ES_PASSWORD;
CActivationDlg* pParent = (CActivationDlg*)m_cKey.GetParent();
CRect rect;
m_cKey.GetWindowRect(rect);
pParent->ScreenToClient(rect);
UINT nID = m_cKey.GetDlgCtrlID();
HWND hWnd = ::CreateWindowEx(WS_EX_CLIENTEDGE, _T("edit"), NULL, dwStyle,
rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top,
pParent->m_hWnd, (HMENU)nID, AfxGetInstanceHandle(), NULL);
if (hWnd == NULL)
{
delete[] pSaveText;
return;
}
m_cKey.SetWindowText(NULL);
::SetWindowText(hWnd, pSaveText);
delete[] pSaveText;
if (pFont != NULL)
{
ASSERT(pFont->m_hObject != NULL);
::SendMessage(hWnd, WM_SETFONT, (WPARAM)pFont->m_hObject, 0);
}
SetDlgCtrlID(nID+1);
HWND hWndOld = m_cKey.Detach();
::SetWindowLong(hWndOld, GWL_WNDPROC, (LONG)*GetSuperWndProcAddr());
ASSERT(m_cKey.m_hWnd == NULL);
m_cKey.SubclassWindow(hWnd);
ASSERT(m_cKey.m_hWnd == hWnd);
UINT nTabStops = 7;
m_cKey.SetTabStops(nTabStops);
m_cKey.GetClientRect(&rect);
m_cKey.SetWindowPos(NULL, 0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|SWP_NOZORDER|SWP_SHOWWINDOW);
m_cKey.UpdateWindow();
::SetWindowPos(hWndOld, NULL, 0, 0, 0, 0,
SWP_HIDEWINDOW|SWP_NOREDRAW|SWP_NOMOVE|SWP_NOSIZE|SWP_NOACTIVATE|
SWP_NOZORDER);
::DestroyWindow(hWndOld);
UpdateData(FALSE);
}
Whoever said nothing's impossible never tried slamming a revolving door!
-- modified at 6:45 Wednesday 1st March, 2006g door!
|
|
|
|
|
<rant>
ES_PASSWORD - totally useless, don't know why it exists.
</rant>
I had this same problem until I found (after much digging) the easy way. Check out: CEdit::SetPasswordChar[^]
From the documentation:
Parameters
ch
Specifies the character to be displayed in place of the character typed by the user. If ch is 0, the actual characters typed by the user are displayed.
Apparently if an Edit control has ES_PASSWORD set when it is created (or subclassed or... lordy, who knows exactly when), MFC calls SetPasswordChar() with a value of '*'. ES_PASSWORD does not seem to be a true window style attribute, but can the documentation point that out in an obvious manner? Nooooo!
Anyway, see if that won't give you a cleaner solution. It's working well for us in our shop.
Just remember... Offer void where prohibited. Your mileage may vary.
Later,
Dan
Remember kids, we're trained professionals. Don't try this at home!
|
|
|
|
|
WOW!
Thanks, I'll give that a shot when I get into work.
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
Worked like a charm!!!
Thanks, that is much cleaner!
Rob
Whoever said nothing's impossible never tried slamming a revolving door!
|
|
|
|
|
Hi every body,
I use this code to stay my window on top :
::SetWindowPos(m_hWnd ,HWND_TOPMOST,294,251,415,240,SWP_SHOWWINDOW);
is there any way so that my window keep alwas the focus?
Thanks in advance
georges
|
|
|
|
|
Why three separate posts with the same question?
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
sorry,
just an error while i tried to post my message. I received error updating...
|
|
|
|
|
CHEICKNA TRAORE wrote: just an error while i tried to post my message. I received error updating...
From my experience, 99% of the time this error is received, it is after the post has been made, but before the results are sent back to the client's browser.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
Yeah, it's happened to before also.
Steve
|
|
|
|
|
Hi every body,
I use this code to stay my window on top :
::SetWindowPos(m_hWnd ,HWND_TOPMOST,294,251,415,240,SWP_SHOWWINDOW);
is there any way so that my window keep alwas the focus?
Thanks in advance
|
|
|
|
|
Hi every body,
I use this code to stay my window on top :
::SetWindowPos(m_hWnd ,HWND_TOPMOST,294,251,415,240,SWP_SHOWWINDOW);
is there any way so that my window keep alwas the focus?
Thanks in advance
Georges
|
|
|
|
|
You could try resetting the focus back to your window in its onfocus() event, but I'm not entirely sure it will work.
Besides, a window that always has the focus will irritate an awful lot of users. The purpose of Windows is to allow users to switch to other tasks. To deliberately break this model will frustrate and anger many users...
The StartPage Randomizer | The Timelapse Project
|
|
|
|
|
How to prepare data structure for capturing data from a machine??
Chaitanya
|
|
|
|
|
Can you be a bit more specific? Your question could be answered in a dozen different ways.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
I would like to store the data from the sensor after intializing or sending all the commands to the sensor i,e for continous data output??
|
|
|
|
|
Does this "sensor" have an API? How is it connected to the computer?
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
|
|
How to record/process data sent from the sensor????
|
|
|
|
|
Having not coded very much serial stuff before, this is just a guess. Those other articles I referenced would have shown this, but I think you'll use something like:
HANDLE hPort = CreateFile("\\\\.\\COM1", ..., OPEN_EXISTING, ...);
ReadFile(hPort, ...); Also see here.
"Let us be thankful for the fools. But for them the rest of us could not succeed." - Mark Twain
"There is no death, only a change of worlds." - Native American Proverb
|
|
|
|
|
am using Send() and Recieve() functions
lnewlength = send(lnewSocket,(char*)lnewData,lDataLenght,0);
lnewlength= recv(lnewSocket,(char*)lData,1024,0);
|
|
|
|
|