|
I have SwitchView routine presently written as a member of the CMAInFrame class. I need to access this function from a view class. I cannot figure out how to call this function from CMYView:
I tried AfxGetWnd()->SwitchView but thats not right.
If theres no way to get to the function (I dont believe that!), then I'd like to modify it so that it becomes a member of the view class. This step woud really be very instructive for me, since I'm new and just now getting a feel for all these classes in the doc/view architecture.
Here is the function:
BOOL CMainFrame::SwitchView(CMultiDocTemplate *pTemplate, CRuntimeClass *pViewClass)
{
CMDIChildWnd* pChild = (CMDIChildWnd*) MDIGetActive();
if ( pChild == NULL ) return FALSE;
CDocument* pDoc = pChild->GetActiveDocument();
if ( pDoc == NULL ) return FALSE;
CView* pView;
POSITION pos;
pos = pDoc->GetFirstViewPosition();
while( pos != NULL )
{
pView = pDoc->GetNextView( pos );
if( pView->IsKindOf( pViewClass ) )
{
pView->GetParentFrame()->ActivateFrame();
return TRUE;
}
}
pChild = (CMDIChildWnd*) pTemplate->CreateNewFrame(pDoc, NULL ); //error here ERROR: Dialog with IDD 0x0082 must have the child style.
if( pChild == NULL ) return FALSE;
pChild->MDIActivate();
pTemplate->InitialUpdateFrame( pChild, pDoc);
return TRUE;
}
|
|
|
|
|
((CMainFrame*)AfxGetMainWnd())->SwitchView(...);
|
|
|
|
|
Thanks very much. Works like a charm!
|
|
|
|
|
Is somebody can help me and tell me how to modify caption in a property page.
|
|
|
|
|
|
|
You are welcome, I hope you have seen my lovely article about property sheet with status bar, toolbar, menu and tool tips
|
|
|
|
|
Hi...
How to create a consol window like the output window of VC++ 6.0 ???
For the moment I use a view derived from CEditView :
class CMyView : public CEditView {...}
And for insert text (read-only), I use this method that I've created in the view:
void CMyView::DisplayText(CString text) const
{
CEdit& theEdit = GetEditCtrl();
theEdit.SetSel(-2, -1);
theEdit.ReplaceSel(text);
}
Moreover, this method is only call from CMyDocument like this:
void CMyDoc::OnMyProgram()
{
CMyView* pView = (CMyView*)m_viewList.GetHead();
pView->DisplayText("\r\nMy Programming\r\n");
}
My question: Is that clean ???
In fact, I want that the scrollbar move with text insert...
Thanks in advance...
Hello World!!!
from Raphaël
|
|
|
|
|
To scroll down listbox programmatically, I use such code:
m_list_box.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);
Try this with CEditView or it's underlying Edit Control.
|
|
|
|
|
OK thanks...
But now, how to add text in the end of the CEdit control ???
Thus, NOT replace...
curently I set the carret on the ending position with this code:
theEdit.SetSel(-2, -1);
And then I replace the ending position with text, like this:
theEdit.ReplaceSel(text);
I find that not very clean...
An Add(CString str) method must exist !!!
thanks
Hello World!!!
from Raphaël
|
|
|
|
|
Hi i have mapped a timer to my Dialog.Can anyone tell me where i have to put my code in that timer function.I mean which of the following i have to follow?.
void CCleanUpDlg::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(nIDEvent);
///My code
//
//
}
or
void CCleanUpDlg::OnTimer(UINT nIDEvent)
{
///My code
//
//
//
CDialog::OnTimer(nIDEvent);
}
With regards
|
|
|
|
|
|
Hello...
You can destroy this line... I think...
Classicaly, I use this model:
void CCleanUpDlg::OnTimer(UINT nIDEvent)
{
switch(nIDEvent) {
case 1:
...
break;
case 2:
...
break;
...
}
}
nIDEvent is the number of the timer which is activated...
Hello World!!!
from Raphaël
|
|
|
|
|
You don't really need to call base class for your timer if you don't want to:
void CCleanUpDlg::OnTimer(UINT nIDEvent)
{
if (nIDEvent == YOUR_TIMER_ID)
{
}
else
CDialog::OnTimer(nIDEvent);
}
Last Article:
Adding VBScript/JScript to C++ App
Jesus Christ is LOVE! Please tell somebody. P. Selormey and I think the same!
|
|
|
|
|
Hi, I have a Composite Control with a ListControl. I wrote my own CListCtrl derived list control which does automatic column sizing and sorting. Now I want to do some custom drawing but I cannot seem to catch the NM_CUSTOMDRAW message.
I tried catching the message by putting ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw) in the message map, but this does seem to do the trick. I also tried to catch the message in OnNotify but here I can only catch the NM_CUSTOMDRAW from the header.
In the Composite Control class I created a member object of my own list control class (m_list) and in OnInitDialog I attached the list control that I drew in my resource by using m_list.SubclassWindow(GetDlgItem(IDC_LIST1)).
What am I doing wrong here ?
|
|
|
|
|
hi all,
i want to any initialization need to do for CSocket?
in the a demo with SDI structure, i can do all the initial methods (create, connect). but, in my program with dialog structure, i can't do such methods.
i want to know any special stuffs need to do b4?
here is the code, i just direct copy from SDI(demo) to dialog(my code) but failed to work...
CSocket client;
if (!client.Create())
{AfxMessageBox("failed create");}
if (!client.Connect("localhost", 4444))
{AfxMessageBox("failed connect");}
it return "failed create" in my code, but work in the demo.
i want to know whether related to SDI structure?
thanks,
jim
|
|
|
|
|
|
hi,
i did not call this functon. what is it use for?
i can see there is this code in the demo.
thank you! i think it's the problem...
thank you very much!
jim
|
|
|
|
|
Hi,
Have you called AfxInitSockets() ?
-widi
|
|
|
|
|
ok, it's afxsocketinit().
-widi
|
|
|
|
|
Hi,
I need to create an installation process for my project (FTP server). It should be installed as a service. Does anybody have any idea ? Thanks in advance.
Celebrate Mr. Cesilko!
|
|
|
|
|
Following code is from my application for installing services during development. It can help help you to write own one.
void CSInstallDlg::OnInstall()
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
unsigned long int i = SC_MANAGER_ALL_ACCESS;
UpdateData(TRUE);
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
if ( schSCManager )
{
schService = CreateService(
schSCManager, // SCManager database
m_ServiceName, // name of service
m_DisplayName, // name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
m_PathToExe, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
TEXT(""), // dependencies
NULL, // LocalSystem account
NULL); // no password
if ( schService )
{
AfxMessageBox(TEXT("Service installed.\n"));
CloseServiceHandle(schService);
}
else
{
AfxMessageBox(TEXT("CreateService failed\n"));
}
CloseServiceHandle(schSCManager);
}
else
AfxMessageBox(TEXT("OpenSCManager failed\n"));
}
void CSInstallDlg::OnRemove()
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
SERVICE_STATUS ssStatus;
UpdateData(TRUE);
schSCManager = OpenSCManager(
NULL, // machine (NULL == local)
NULL, // database (NULL == default)
SC_MANAGER_ALL_ACCESS // access required
);
if ( schSCManager )
{
schService = OpenService(schSCManager, m_ServiceName, SERVICE_ALL_ACCESS);
if (schService)
{
// try to stop the service
if ( ControlService( schService, SERVICE_CONTROL_STOP, &ssStatus ) )
{
while( QueryServiceStatus( schService, &ssStatus ) )
{
if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING )
{
Sleep( 1000 );
}
else
break;
}
if ( ssStatus.dwCurrentState == SERVICE_STOPPED ) {
} else
AfxMessageBox(TEXT("Service failed to stop.\n"));
}
// now remove the service
if( DeleteService(schService) )
AfxMessageBox(TEXT("Service removed.\n"));
else
AfxMessageBox(TEXT("DeleteService failed\n"));
CloseServiceHandle(schService);
}
else
AfxMessageBox(TEXT("OpenService failed\n"));
CloseServiceHandle(schSCManager);
}
else
AfxMessageBox(TEXT("OpenSCManager failed\n"));
}
|
|
|
|
|
s_k wrote:
I need to create an installation process for my project (FTP server). It should be installed as a service. Does anybody have any idea ? Thanks in advance.
You can use my CServiceHelper class.
http://www.codeproject.com/system/cservicehelper.asp
sample code :-
CServiceHelper m_sh;
m_sh.SetServiceDisplayName("FTP server service");
m_sh.SetServiceName("FTP2000");
m_sh.SetServicePath("D:\\YourSoft\\sftp.exe");
m_sh.SetAutoStart(true);
m_sh.Create();
Author of the romantic comedy
Summer Love and Some more Cricket [New Win]
Review by Shog9
Click here for review[NW]
|
|
|
|
|
Hello,
I need to convert a VC application into a activex. Is it possible to do it. I do have the source code for a particular VC application. I need to convert the VC funtions to activex. So that It will be possible for me to use it in VB.
It is urgent, Please tell any paths to find the solution.
Rajesh Kannan
|
|
|
|
|
do you man you wish to wrap the application as a control to use embedded in the VB application - or do you wish to just automate the application from the VB application
Holy Handgrenade of Antioch instructions
|
|
|
|