|
I am to provide RTL Layout for the CPropertySheet.
As it is derived from the CWnd, I am setting WS_EX_LAYOUTRTL as the extended style.
But it is doing nothing. Just added a Debug Assertion Failure to my code.
Please suggest me how can i provide the RTL layout for the CPropertySheet.
<br />
#include "stdafx.h"<br />
#include "CmnCtrl1.h"<br />
#include "propsht.h"<br />
<br />
#ifdef _DEBUG<br />
#define new DEBUG_NEW<br />
#undef THIS_FILE<br />
static char THIS_FILE[] = __FILE__;<br />
#endif<br />
<br />
<br />
BEGIN_MESSAGE_MAP(CCmnCtrl1App, CWinApp)<br />
ON_COMMAND(ID_HELP, CWinApp::OnHelp)<br />
END_MESSAGE_MAP()<br />
<br />
<br />
CCmnCtrl1App::CCmnCtrl1App()<br />
{<br />
<br />
}<br />
<br />
<br />
CCmnCtrl1App theApp;<br />
<br />
<br />
BOOL CCmnCtrl1App::InitInstance()<br />
{<br />
AfxEnableControlContainer();<br />
<br />
<br />
CAllControlsSheet allcontrolssheet(_T("Common Controls Sample"));<br />
allcontrolssheet.ModifyStyleEx(0, WS_EX_LAYOUTRTL);<br />
allcontrolssheet.m_psh.dwFlags |= PSH_RTLREADING ;<br />
m_pMainWnd = &allcontrolssheet;<br />
m_pMainWnd->ModifyStyleEx(0, WS_EX_LAYOUTRTL);<br />
allcontrolssheet.DoModal();<br />
return FALSE;<br />
}<br />
<br />
|
|
|
|
|
Looking at this page[^], I think you need to set WS_EX_LAYOUTRTL in the resource file for each property page (as each property page is a dialog), rather than directly on the property sheet?
|
|
|
|
|
Thanks for your reply. I tried setting the Layout RTL flag to true for each property page in the resource file. I also set the language of these property pages to Arabic. The result was that the individual pages (tabs) are getting displayed in the Right to Left layout.
But the container window (main dialog box that is the Property Sheet) is still in LTR layout.
Please suggest for the same..
|
|
|
|
|
Looking at the description of PSH_RTLREADING on this page[^], maybe you don't need to set both PSH_RTLREADING AND WS_EX_LAYOUTRTL ?
CAllControlsSheet allcontrolssheet(_T("Common Controls Sample"));
allcontrolssheet.ModifyStyleEx(0, WS_EX_LAYOUTRTL);
allcontrolssheet.m_psh.dwFlags |= PSH_RTLREADING ;
m_pMainWnd = &allcontrolssheet;
m_pMainWnd->ModifyStyleEx(0, WS_EX_LAYOUTRTL);
|
|
|
|
|
I tried the same after removing both the lines pointed by you. Still the main container window is in LTR layout.
What i got from the PSH_RTLREADING documentation and its implementation in my project, is "PSH_RTLREADING" only changes the the caption. What is require by the RTLLayout is change in the whole TITLE bar, Status bar, tabs all these should be in the Right of the screen.
Canption should be displayed in the Right of the Title bar.
However PSH_RTLREADING only changes the caption in RTL. However the position of the caption in the Title bar still reamings in teh left.
|
|
|
|
|
I'm wondering if you might be better using SetProcessDefaultLayout and removing the other explicit RTL options in your app...
I'm afraid my knowledge of the subject is exhausted now
|
|
|
|
|
SetProcessDefaultLayout(LAYOUT_RTL ) is not solving the problem.
|
|
|
|
|
CPropertySheet layout is automaticly change by the OS
|
|
|
|
|
My project is Dialog base and I want to change "Font" of all control on this dialog.
What's the function can support this issue?
|
|
|
|
|
|
Plz....Give me an idea or source code to create a scenary in the client area of the frame window.
|
|
|
|
|
You posted the same question THREE TIMES within 5 minutes. Not a good start for you.
"Well, we're getting "F"'d at work. WPF, WCF, and WWF... WTF?" --John Simmons
|
|
|
|
|
Requesting source code to divide the client area in to 4 quadrants with different gradient patterns.
|
|
|
|
|
Requesting source code to divide the client area in to 4 quadrants with different gradient patterns.(required soon)
modified on Friday, January 9, 2009 7:34 PM
|
|
|
|
|
Hi All,
I had poarted VC++ 6.0 code to VC++ 2008. I am facing a problem with this piece of code.
typedef std::vector<char> Buffer;
void LoadFile(CString filePath, Buffer &data)
{
std::ifstream file(filePath, std::ios::in | std::ios::binary);
if (file.fail()) {
ThrowError(GetLastError(), "", (LPCTSTR)filePath);
}
while (!file.eof()) {
char c;
file.get(c);
data.push_back(c);
}
}
File Data: 212*R:\PRDS\Helptable\HL17.DAT *006*R:\PRDS\Helptable\HL58.DAT
<b>When i open the file instead of * i found a box </b>
When i look at the data vector in VC++ 6.0 the first element is 212, second is "r:\..." so on...
but when i retrieve the data vector in VC++ 2008, i am getting individual characters.
I am thinking on the boxes that he used to seperate the elements in the file.
Any suggestion will help me.
Thanks All
|
|
|
|
|
pratap1980 wrote: first element is 212, second is "r:\..."
First element of what? The vector contains chars, so can't have a string as an element.
pratap1980 wrote: when i retrieve the data vector in VC++ 2008, i am getting individual characters
That's what I'd expect to see in a vector of chars?
|
|
|
|
|
I am still fairly new to MFC, I have been mainly working on embedded/chip level C.
Now I have a MFC application talking to my controller through ActiveX. Certain data retrieived by ActiveX needs to be displayed to MFC user interface. data retrieiving and filltering are successful. I am trying to pass the data to MFC into an Edit control. Edit control received the notice OK. Then I get stuck. The value of the Edit control is NOT updating until the call to ActiveX is returned. As a result, only the last data is displayed. all data sent while ActiveX is running is not shown to User (although Edit control got all data).
MFC Application -> User Interface -> User Click "Retrieve" -> Display certain data to Edit box on User Interface at run-time.
What am I missing?
in .h file:
afx_msg void OnChangeStatus();
in .c file:
void CReceiveSend::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CReceiveSend)
....
DDX_Text(pDX, IDC_STATUS, X_Current_Status);
....
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CReceiveSend, CDialog)
//{{AFX_MSG_MAP(CReceiveSend)
...
ON_EN_CHANGE(IDC_STATUS, OnChangeStatus)
...
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CReceiveSend::OnChangeStatus()
{
//transfers values from the member variables to the controls
UpdateData( FALSE );
}
inside ActiveX function call:
int CReceiveSend::XReceive()
{
....
X_Current_Status = some_value;
this->SetDlgItemText(IDC_STATUS, X_Current_Status);
return(0);
}
Thanks
|
|
|
|
|
Got answer to my own question : Use worker thread instead for ActiveX control. It was using User Interface thread before.
|
|
|
|
|
Dear All
I have one project in VC2005.
In has mose run time error.
But I dont know how to use call Stack in VC2005.
In VC2000, a Call Stack item exists
But in VC2005 in "view->Other Windows " there is no Call Stack
Could you please help me for this problem.
Regards
Mahdi
|
|
|
|
|
Menu Debug->Windows->Call Stack (or ALT + 7 ) on my VC++ 2008 Express Edition ...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
|
You are welcome.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I have an MFC app that is having some weird issues.
When you start the program and don't move window around it works fine. But as soon as you start moving it around, an exception will occur.
Debugging this in VS, I will get a buffer overrun message or some MFC debug assertion. I'm pretty new to MFC, anyone have any ideas where I should look to fix this?
|
|
|
|
|
Paffinity wrote: I'm pretty new to MFC, anyone have any ideas where I should look to fix this?
Very close to the error message (or as last resort, you may post it here).
You should be precise to get any help.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hi,
I am using AfxBeginthread in my application for reading the datas from my hardware via serial ports. after clsoing my GUI, when i try to open once again, am getting error that "exe is running". I have closed my handles related to port in destructor of the class. i suspect the Thread is not closed completely, it occupies the memory, i want to know whats the better way to close or kill the thread.
thanks in advance,
Balaji S
|
|
|
|