部落格轉移:http://vivianke.blog.163.com/blog/static/29715271200781121956674/
第一種:使用資料來源DSN
BOOL CMaterial_MISApp::InitInstance()
{
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Change the registry key under which our settings are stored.
// TODO: You should modify this string to be something appropriate
// such as the name of your company or organization.
SetRegistryKey(_T("Local AppWizard-Generated Applications"));
LoadStdProfileSettings(); // Load standard INI file options (including MRU)
// Register the application's document templates. Document templates
// serve as the connection between documents, frame windows and views.
m_iLoginCount=0;
if (FAILED(::CoInitialize(NULL))) {
AfxMessageBox("ADO Init failed");
return false;
}
try{
ADOConn.CreateInstance(__uuidof(Connection));
ADOConn->Open("DSN=Material_MIS;Provider=MSDASQL","DBAdmin","VIVIANKE",adConnectUnspecified); //使用連接字串,串連資料庫
}
catch (_com_error e) {
CString strErr;
strErr.Format("%s",(char*)e.Description());
AfxMessageBox(strErr);
}
catch (...) {
AfxMessageBox("Unknown Error...!");
}
m_pADOSet.CreateInstance(__uuidof(Recordset));
//彈出登入視窗
CLoginDlg dlg;
if (dlg.DoModal()!=IDOK) return false;
m_strCurUser=dlg.m_strName;
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMaterial_MISDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CMaterial_MISView));
AddDocTemplate(pDocTemplate);
// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_MAXIMIZE);
m_pMainWnd->UpdateWindow();
m_pMainWnd->SetWindowText("物資管理系統");
return TRUE;
}
第二種:不使用資料來源
BOOL CMyApp::InitInstance()
{
// Initialize OLE libraries
if (!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return FALSE;
}
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
// Parse the command line to see if launched as OLE server
if (RunEmbedded() || RunAutomated())
{
// Register all OLE server (factories) as running. This enables the
// OLE libraries to create objects from other applications.
COleTemplateServer::RegisterAll();
}
else
{
// When a server application is launched stand-alone, it is a good idea
// to update the system registry in case it has been damaged.
COleObjectFactory::UpdateRegistryAll();
}
//contact to database
try
{
m_DBCnt.CreateInstance(__uuidof(Connection));
m_DBCnt->ConnectionString=
"driver={SQL Server};server=vivianke;" //使用OLEDB連結SQL資料庫
"UID=DBAdmin;PWD=VIVIANKE;"
"database=RMS";
m_DBCnt->Open("","","",-1);
}
catch (_com_error e) {
CString err;
err.Format("%s",(char*)e.Description());
AfxMessageBox(err);
}
m_pADOSet.CreateInstance(__uuidof(Recordset));
CMyDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}