|
Benoy Bose wrote: There is no need to design a layout manager.
Benoy Bose wrote: 1. Get the Client rectangle of the Dialog Box. ( Use: GetClientRect(LPRECT))
2. Calculate the new size of controls.
4. Validate whether the dialog controls are valid window ( Use; IsWindow( HWND ))
5. Move dialog controls to the new position i they are valid windows.
Which is what the layout manager will do for you.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
Layout manager in Java ( Like you said ) will automatically resize the controls in the window.
Since we have a very simple method to resize the controls in MFC, designing a layout manager is overhead to the developer.
In Java it's depends upon the personel interest since there are both the features are readly available.
|
|
|
|
|
Benoy Bose wrote: Layout manager in Java ( Like you said ) will automatically resize the controls in the window.
Not always. It depends on the way you design it.
Benoy Bose wrote: Since we have a very simple method to resize the controls in MFC, designing a layout manager is overhead to the developer.
Now imagine she want's to change the layout! Imagine the overhead.
Benoy Bose wrote: In Java it's depends upon the personel interest since there are both the features are readly available.
That is why you must have a layout manager. When you design, generalize your design. That is what OOP is all about.
If you don't want any layout don't call the layout manager. I love the Java layout manager classes.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
its really depends upon the persnel interest. I respect you interest. I believe Layout can generalize the functionality, but my code do the same in simple and a few lines.
While I was working with layout managers in Java, i feel i have only a less freedom to move the control over the window. And I satrted to put NULL in the Java Window layout and moved my controls independently.
|
|
|
|
|
Benoy Bose wrote: my code do the same in simple and a few lines.
Then that is called a simple layout manager. Don't get overrawed by the term Layout Manager.
Benoy Bose wrote: i feel i have only a less freedom to move the control over the window.
I worked in Java for sometime. The LayoutManagers were cool. Some of them were not that good but then they all had some purpose as indicated by their name.
I worked in some MFC layout managers. All of them were real cool. Except for setting them up. Once that pain is over it looks real cool.
But as you said it depends.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
I Even want to increase/decrease the size of the controls based on th ewindow size. How can i do this??

|
|
|
|
|
You can either use Layout Managers or simple use MoveWindow or SetWindowPos in OnSize( WM_SIZE )
|
|
|
|
|
|
Thanks a lot.
I got it.
|
|
|
|
|
you can use WM_SIZE and use functions MoveWindow or SetWindowPos in this event
whitesky
|
|
|
|
|
I am not getting it.
This is what my code is:
void CEgAppDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
CRect wRect,eRect;
GetClientRect(wRect);
m_edit.GetClientRect(eRect);
POINT * pt;
pt->x=eRect.left;
pt->y=eRect.top;
::ClientToScreen(m_edit.m_hWnd,pt);
eRect.bottom+=30;
eRect.right+=30;
::MoveWindow(m_edit.m_hWnd,pt->x,pt->y,eRect.Width(),
eRect.Height(),TRUE);
}
I am getting an Exception
|
|
|
|
|
i guess m_edit.m_hWnd=NULL
insert this
if(m_edit.m_hWnd!=NULL)
{
...
}
whitesky
|
|
|
|
|
Hey, just reduce the code lines do as follows
void CEgAppDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
CRect ClientRect( 0, 0, 0, 0 );
GetClientRect( ClientRect );
if( FALSE != IsWindow( m_edit.GetSafeHwnd()))
{
m_edit.MoveWindow( ClientRect );
}
}
This code is expected to work only when the Dialog is forcely resize by using Minimize, Maximize, Drag Size etc. To resize the control in Initial state you have to put some similiar code in the OnInitDialog of the dialog class like
CRect ClientRect( 0, 0, 0, 0 );
GetClientRect( ClientRect );
m_edit.MoveWindow( ClientRect );
In OnInitDialog you do not have to check the Window handle because OnInitDialog is called after the creation of the Dialog Box and it's control. But you should check the Validity of m_edit window in OnSize because it is called by the framework when the DialogBox alone is created, before the edit is created.
OK ?
Regards,
Benoy Bose
|
|
|
|
|
sruti_p wrote: How can i resize the dialog box controls when i resize the dialog box?
Either Subclass the control to handle the Dialog resize or use MoveWindow api!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
what is the best way to open a program and check for a file if its not there make it? its a ini file. 
|
|
|
|
|
locoone wrote: what is the best way to open a program and check for a file if its not there make it? its a ini file.
_tgetcwd , GetModuleFileName .
Hope I understood your question.
Nibu thomas
A Developer
Programming tips[^] My site[^]
|
|
|
|
|
from ur question what i understood that, u have an exe it will check for a file and if not existing, u need to create one right?
here is a sample snippet
CFileFind finder;<br />
BOOL bWorking = finder.FindFile("test.ini");<br />
<br />
if(FALSE == bWorking)
{<br />
}<br />
SaRath.
"Don't Do Different things... Do Things Differently..."
|
|
|
|
|
you can use
<br />
WIN32_FIND_DATA m_data;<br />
HANDLE hFile;<br />
hFile=FindFirstFile(filename,&m_data)<br />
if(hFile==INVALID_HANDLE_VALUE)
else<br />
FindClose(hFile);<br />
whitesky
|
|
|
|
|
|
Hi,
I am using USB-to-Serial cable to connect to my device. In my windows application, I use ReadFile/WriteFile to communicate with my device.
Everything is working fine. But one question I would like to ask.
Is DCB setttings important if we are using virtual COM port, eg:
Dcb.BaudRate
Dcb.ByteSize
Dcb.Parity
Dcb.StopBits
Will those settings affect the communication link because we are actually using VIRTUAL COM PORT not the actual port?
Thanks.
|
|
|
|
|
tctan wrote: Dcb.BaudRate
Dcb.ByteSize
Dcb.Parity
Dcb.StopBits
Almost all!
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
So, you mean, even though it is virtual COM port, the DCB setting should also be set properly?
The reason I asked this question is that, someone actually told me that, if you are using virtual com port, you don't need to care about those settings. The only setting concerned is the COM port number.
-- modified at 4:24 Friday 2nd June, 2006
|
|
|
|
|
This may or may not be true depending on the "virtual" COM port.
Sometimes USB devices register themselves as one or more COM ports and those could be called virtual. Different devices behave differently.
I've experienced USB devices used as COM ports that are "enabled" by setting the DTR line, which requires the use of DCB.
However, all COM devices should support the use of DCB, which means that it doesn't hurt to set up things properly. It would also make the code more portable between COM devices.
What you heard regarding not having to set the DCB for virtual COM ports may be true for some specific devices, but certainly not all.
--
Roger
It's supposed to be hard, otherwise anybody could do it!
Regarding CodeProject: "resistance is pointless; you will be assimilated"
|
|
|
|
|
Recently,I am writing a smtp server ,when I test it in the internet ,
I find that it can't send local email to other remote smtp server,
for example smtp.mail.yahoo.com etc.I don't know why?
Can anyone give me some advince?
|
|
|
|
|
I should know pointers by now but still struggle to get code working when dealing with them..
If anyone has any recommended articles I'd be very appreciative. But, the articles dealing with pointer basics don't seem to help me... not sure why. I can understand casting ints, etc. but when it gets to more complex data types, I get confused.
A good example of a tough pointer problem for me is seen below. Not sure why/where I'm reading/changing memory I shouldn't be and I also don't know how I would be able to get the value of the TextualSid in a format usable for strcmp, printf, etc.
Thanks..
//////////
<br />
LPUSER_INFO_23 pBuf = NULL;<br />
LPTSTR TextualSid ;<br />
LPTSTR * TextualSid2= NULL ;<br />
<br />
ConvertSidToStringSid(pBuf, TextualSid2); <br />
<br />
<br />
DWORD sidLen;<br />
sidLen = GetLengthSid(pBuf);<br />
LPDWORD lpdwSize = NULL;<br />
*lpdwSize = sidLen;<br />
GetTextualSid(pBuf->usri23_user_sid, TextualSid, (LPDWORD)lpdwSize);<br />
if (pBuf != NULL) NetApiBufferFree(pBuf);<br />
<br />
Data types used: <br />
<br />
<br />
BOOL GetTextualSid(
PSID pSid,
LPTSTR TextualSid,
LPDWORD lpdwBufferLen
)<br />
{<br />
PSID_IDENTIFIER_AUTHORITY psia;<br />
DWORD dwSubAuthorities;<br />
DWORD dwSidRev=SID_REVISION;<br />
DWORD dwCounter;<br />
DWORD dwSidSize;<br />
<br />
<br />
if(!IsValidSid(pSid)) return FALSE;<br />
<br />
<br />
psia = GetSidIdentifierAuthority(pSid);<br />
<br />
<br />
dwSubAuthorities = *GetSidSubAuthorityCount(pSid);<br />
<br />
<br />
dwSidSize=(15 + 12 + (12 * dwSubAuthorities) + 1) * sizeof(TCHAR);<br />
<br />
<br />
if (*lpdwBufferLen < dwSidSize)<br />
{<br />
*lpdwBufferLen = dwSidSize;<br />
SetLastError(ERROR_INSUFFICIENT_BUFFER);<br />
return FALSE;<br />
}<br />
<br />
<br />
dwSidSize=wsprintf(TextualSid, TEXT("S-%lu-"), dwSidRev );<br />
<br />
<br />
if ( (psia->Value[0] != 0) || (psia->Value[1] != 0) )<br />
{<br />
dwSidSize+=wsprintf(TextualSid + lstrlen(TextualSid),<br />
TEXT("0x%02hx%02hx%02hx%02hx%02hx%02hx"),<br />
(USHORT)psia->Value[0],<br />
(USHORT)psia->Value[1],<br />
(USHORT)psia->Value[2],<br />
(USHORT)psia->Value[3],<br />
(USHORT)psia->Value[4],<br />
(USHORT)psia->Value[5]);<br />
}<br />
else<br />
{<br />
dwSidSize+=wsprintf(TextualSid + lstrlen(TextualSid),<br />
TEXT("%lu"),<br />
(ULONG)(psia->Value[5] ) +<br />
(ULONG)(psia->Value[4] << 8) +<br />
(ULONG)(psia->Value[3] << 16) +<br />
(ULONG)(psia->Value[2] << 24) );<br />
}<br />
<br />
for (dwCounter=0 ; dwCounter < dwSubAuthorities ; dwCounter++)<br />
{<br />
dwSidSize+=wsprintf(TextualSid + dwSidSize, TEXT("-%lu"),<br />
*GetSidSubAuthority(pSid, dwCounter) );<br />
}<br />
<br />
return TRUE;<br />
}<br />
|
|
|
|