|
hai stephen
thanks for ur reply
but in my problem i have got the directory path in a edit box control variable.
so how can i pass that variable to the thread function
please help me to solve this problem
|
|
|
|
|
hi
wat is type of the member variable? if type of the variable is value then u can directly assign it to the cstring variable of structure and pass it.
eg:
structvar.data=m_FilePath;
|
|
|
|
|
You have to be very careful. He's why:
void ThreadRoute1( void* arg )
{
int *pInt = reinerpret_cast<int*>(arg);
}
{
int v = 1;
_beginthread(ThreadRoute1, 0, reinterpret_cast<int*>(&v));
}
This is a recipe for disaster because for all you know the parent thread can make it to the point where "v" is out of scope before it is accessed in the child thread. This is why I use new in my previous example. He's a reworked version.
void ThreadRoute1( void* arg )
{
int *pInt = reinerpret_cast<int*>(arg);
delete pInt;
}
int *pInt = new int(1);
if ( _beginthread(ThreadRoute1, 0, reinterpret_cast<void*>(pInt)) == -1 )
{
delete pInt;
}
Steve
|
|
|
|
|
Hi all,
I have written the following code snippet to repaint all the child windows. But it not even repaints active child. Where I am wrong?
Thanks in advance,
Sarvan AL
void CMainFrame::OnSettingsChangeFont() <br />
{<br />
CFontDialog dlg ;<br />
if(dlg.DoModal() != IDOK) <br />
return ;<br />
<br />
m_strFontName = dlg.GetFaceName() ;
m_nFontSize = dlg.GetSize() ;<br />
<br />
CMDIChildWnd *pChildWnd = MDIGetActive() ;<br />
CView *pView = pChildWnd->GetActiveView() ;<br />
CDocument *pDoc = pView->GetDocument() ;<br />
pDoc->UpdateAllViews(pView) ;<br />
}
|
|
|
|
|
Hi
Actually do u want to change the fonts in view?
How u r setting the font in OnDraw() function?
|
|
|
|
|
Hi Parthiban,
This is how I am setting the font in my view's OnDraw. If I resize the child window, it gets repainted properly. But I am not able to do on my own.
void CProj5View::OnDraw(CDC* pDC)<br />
{<br />
CProj5Doc* pDoc = GetDocument(); <br />
ASSERT_VALID(pDoc);<br />
<br />
CFont title;<br />
title.CreatePointFont(<br />
((CMainFrame*)AfxGetMainWnd())->m_nFontSize, <br />
((CMainFrame*)AfxGetMainWnd())->m_strFontName, <br />
pDC);<br />
<br />
CFont* oldF=pDC->SelectObject(&title);<br />
...<br />
}
Are you able to conclude anything?
Thanks & Regards,
Sarvan AL
|
|
|
|
|
Hi,
i have a Linear Graph Control,i want to create Mutiple Instance`s of the Control and place them in Same view..The width of the clients Area is same for all the instance , only height will be variable..i need to CRect object as parameter to OnCreate function..what should i do to create mutiple instance same control in a view..with some gape between the Instances
Thanks in before
James
|
|
|
|
|
You mean you want to have the control duplicated (so, exactly the same things will be displayed on both controls) ?
I think you wanted to know how to have two instances of the same control no (it doesn't sound very logical to have the same instance duplicated) ?
If yes, you simply create another variable and create it like the first one. That's it.
|
|
|
|
|
Hi
If u want to use one control to display two or more results on same view or dialog, then place same control twice or thrice on view in design time, declare a variable for each and u can use it.
if u r creating control dynamically, then u can pass the CRect co-ordinates to create function of graph. Most of the graph controls have the option to specify the top left coordinates and right bottom coordinates.
|
|
|
|
|
I have written a MFC application program. Now, I need to create a link between the program to PCI 8255 to printer port. How should i do it and what DLL library should i download?
My hardware consists of sensors to send a signal to PCI 8255, then through parallel port to the software. Then the software will generate a word to be display on the LCD display of my hardware(not my computer monitor). How should I do it?
Help is apprciated..thanks
chris
|
|
|
|
|
|
Hi all,
The code below, works fine in debug version, but gives warning in "Release/Use MFC in Static Library/Code Generation/Multithreaded" configuration.
This is the warning message:
warning C4541: 'typeid' used on polymorphic type 'class CView' with /GR-; unpredictable behavior may result
void CMainFrame::OnUpdateFileClose(CCmdUI* pCmdUI) <br />
{<br />
BOOL bCanBeClosed = TRUE ;<br />
<br />
if(IsAnyChildWindowOpen())<br />
{<br />
CMDIChildWnd *pChildWnd = MDIGetActive() ;<br />
CView *pView = pChildWnd->GetActiveView() ;<br />
<br />
if(typeid(*pView) == typeid(CMyView1) ||<br />
typeid(*pView) == typeid(CMyView2)||<br />
typeid(*pView) == typeid(CMyView3) )<br />
bCanBeClosed = FALSE ;<br />
}<br />
pCmdUI->Enable(IsAnyChildWindowOpen() && <br />
bCanBeClosed) ;<br />
}
Kindly suggest me a solution. I am using VC6.0/Win2000.
Thanks in advance,
Sarvan AL
-- modified at 1:01 Tuesday 18th April, 2006
|
|
|
|
|
Edit the project settings for the release configuration and replace the /GR- option with /GR .
Steve
|
|
|
|
|
Maybe off topic; Or maybe not ... but
Sarvan AL wrote: if(typeid(*pView) == typeid(CMyView1) ||
typeid(*pView) == typeid(CMyView2)||
typeid(*pView) == typeid(CMyView3) )
This is a misuse of typeid. You should use dynamic_cast instead.
Maxwell Chen
|
|
|
|
|
Most programming guidelines would go even further - Don't misuse dynamic_cast ; use virtual functions instead.
Steve
-- modified at 1:35 Tuesday 18th April, 2006
i.e.
class CBaseView : public CView
{
public:
virtual bool CanClose() const = 0;
};
class CMyView1 : public CBaseView
{
public:
virtual bool CanClose() const
{
return false;
}
};
class CMyOtherViews : public CBaseView
{
public:
virtual bool CanClose() const
{
return true;
}
};
pView->CanClose();</code>
This is basic OO design and good use the C++'s features.
|
|
|
|
|
Hi Stephen, Maxwell...
Thanks a lot for your immediate reply. It helped me to solve the problem.
Sarvan AL
|
|
|
|
|
Sarvan AL wrote: warning C4541: 'typeid' used on polymorphic type 'class CView' with /GR-; unpredictable behavior may result
I believe it's telling you that the .rdata sections will increase in size, which may or may not be desirable. It might also have something to do with RTTI.
"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
|
|
|
|
|
While being handy and nice, the MFC CHotKeyCtrl class does act weird sometimes, for example, it does not recognize the "space" key, instead, it rejects the keystroke and cleans all existing contents just like I pressed the "backspace" key. Now the funny thing is that, if I set the "space" key programmatically m_wndHotkey1.SetHotkey(VK_SPACE, 0); it will work, just that it cannot be specified by user input.
Unfortunately I really want the "space" key to be one of the configurable hotkeys in my application. Do I have a way to work around this problem? Thank you.
|
|
|
|
|
Try with:
UnregisterHotKey(...)
m_hotkey1.GetHotKey(...)
...
RegisterHotKey(...)
m_hotkey1.SetHotKey(...)
RegisterHotKey modifier flags defined in "CommCtrl.h" and "WinUser.h" are not same.
The values for fsModifiers are defined in "WinUser.h".
|
|
|
|
|
Hi,
I would like to add drag/drop function to the CTreeCtrl class, just as the
Resource tree in Visual C++ environment. Are there any examples?
Thanks.
|
|
|
|
|
|
Hi, friends,
I used to integrate the simulink package to my project, that is, I opened a
Simulink window and moved the window to the related view, assumed to be the CMHCSimPlatformView, the codes are referred to as follows:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CMHCSimPlatformView::OnStartMatlabEngine()
{
...
m_hSimulink = ::FindWindow(NULL,"Project_1 ");
if(::IsWindow(m_hSimulink))
{
//Set the CMHCSimPlatformView is the parent window for the simulink one
::SetParent(m_hSimulink,this->GetSafeHwnd());
CWnd * pWnd = NULL;
pWnd = FromHandle(m_hSimulink);
CRect rect;
GetClientRect(&rect);
//move the simulink window to the related area, that is to the
//client area of the CMHCSimPlatformView.
pWnd->MoveWindow(&rect,false);
//delete the catpion of the simulink interface
pWnd->ModifyStyle(WS_CAPTION|WS_BORDER,0);
//delte the system menu of the simulink interface
pWnd->SetMenu(NULL);
//delete the system toolbar of the simulink interface
HWND handToolbar = ::FindWindowEx(m_hSimulink,NULL,_T ToolbarWindow32"),NULL);
CWnd* pToolWnd;
pToolWnd = FromHandle(handToolbar);
pToolWnd->ShowWindow(FALSE);
CFrameWnd * pFrame=(CFrameWnd *)AfxGetMainWnd();
pFrame->GetActiveFrame()->UpdateWindow ();
UpdateData(true);
}
...
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
where, Project_1 is the name of a simulink file opened before, and m_hSimulink is a variable of HWND.
Surely, the simulink window was moved to the CMHCSimPlatformView client area when the above codes are executed. However, after later opertions, the simulink window was often covered with the CMHCSimPlatformView window.
How to ensure that the simulink window always stays on the top ?and how to
change the simulink window according to the CMHCSimPlatformView area?
Regards.
zhou_rusheng
|
|
|
|
|
Please give me some ideas.
|
|
|
|
|
I want to add ZoomIn/ZoomOut in my MFC Application, works on text and image, just like MSWORD, how can I get this??
thanks for your response
-- modified at 22:50 Monday 17th April, 2006
|
|
|
|
|
MM_ISOTROPIC will get you zoom with minimal effort. You'll have to work a little though to get an app like MSWORD. I can't help you there.
|
|
|
|