LRESULT CMainWindow::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { try { ModifyStyle(WS_CAPTION,WS_CLIPSIBLINGS | WS_CLIPCHILDREN); if(!RegisterSkin(_T("mainwindow.xml"),0,this)) return 0; GetPaintMgr()->AddNotifier(this); RECT rcClient; ::GetClientRect(*this, &rcClient); ::SetWindowPos(*this, NULL, rcClient.left, rcClient.top, rcClient.right - rcClient.left, \ rcClient.bottom - rcClient.top, SWP_FRAMECHANGED); CLogin* pLogin = new CLogin(); pLogin->Create(m_hWnd,NULL,UI_WNDSTYLE_DIALOG, WS_EX_WINDOWEDGE); pLogin->CenterWindow(); pLogin->BringWindowToTop(); pLogin->ShowModal(); } catch (...) { throw _T("CMainWindow::OnCreate"); } return 0; }
//对涉密词典进行编辑 void CMainFrame::OnWordnetEdit() { // TODO: 在此添加命令处理程序代码 //弹出登陆界面 CLogin dlg; INT_PTR nResponse = dlg.DoModal(); }
void CMainMenu::login() { CLogin login; if(login.exec() == QDialog::Accepted) { emit sigLoginSuccess(login._username->text()); } }
void CHLQYDlg::OnBtnZhuce() { // TODO: Add your control notification handler code here CLogin a; a.DoModal(); m_PWD=a.m_Key2; m_UID=a.m_Name; UpdateData(FALSE); }
void CFtpStream::Automaton(int action) { int ctrl = 0, data = 0, r; char msg[1024]; SOCK *csSock = NULL; try { if (! fURL.IsValid()) THROW(("The data to connect is not complete")); ctrl = socket(AF_INET, SOCK_STREAM, 0); if (ctrl < 0) THROW(("Failed to get socket: %s", strerror(errno))); data = socket(AF_INET, SOCK_STREAM, 0); if (data < 0) THROW(("Failed to get socket: %s", strerror(errno))); csSock = s_open(ctrl, "r+"); struct hostent *host; if ((host = gethostbyname(fURL.Server())) == NULL) THROW(("Failed to get server address: %s", strerror(errno))); struct sockaddr_in sa; sa.sin_family = AF_INET; sa.sin_port = htons(21); sa.sin_addr.s_addr = *(unsigned int *)host->h_addr; FailOSErr(connect(ctrl, (struct sockaddr *)&sa, sizeof(sa))); mail_pop_account pa; string username, password; username = strlen(fURL.Username()) ? fURL.Username() : "anonymous"; if (strlen(fURL.Password())) password = fURL.Password(); else if (get_pop_account(&pa) == B_OK) password = pa.reply_to; else password = "******"; struct sockaddr_in saData; memset(&saData, 0, sizeof(saData)); saData.sin_family = AF_INET; int state = 1; while (state) { GetReply(csSock, r, msg); switch (state) { case 1: if ((r / 100) != 2) THROW(("Connect failed: %s", msg)); s_printf(csSock, "user %s\r\n", username.c_str()); state = 2; break; case 2: if ((r / 100) == 3) { s_printf(csSock, "pass %s\r\n", password.c_str()); state = 3; break; } else if ((r / 100) != 2 && (r / 100) != 5) THROW(("Failed to login: %s", msg)); // fall thru case 3: if ((r / 100) == 5) { bool ok; CLogin *l = DialogCreator<CLogin>::CreateDialog(NULL); FailNil(l); l->Connect(fURL.Server(), username, password, &ok); if (ok) { s_printf(csSock, "noop\r\n"); state = 1; continue; } else THROW((0)); } else if (state == 3 && (r / 100) != 2) THROW(("Failed to login: %s", msg)); else if (strlen(fURL.Path())) { s_printf(csSock, "cwd %s\r\n", fURL.Path()); state = 4; break; } // fall thru case 4: { if (state == 4 && (r / 100) != 2) THROW(("Failed to change directory: %s", msg)); if (fPassive) { // switch to passive mode s_printf(csSock, "pasv\r\n"); } else { FailSockErr(bind(data, (struct sockaddr *)&saData, sizeof(saData))); FailSockErr(listen(data, 5)); // [zooey]: calling getsockname() on a socket that has been bound to // IN_ADDR_ANY (the wildcard-address) will *not* return any IP-address, // as this will only be setup by the system during connect or accept. // [refer to W.R. Stevens - Unix Network Programming, Vol 1, p. 92] // BeOS R5 however, *does* fill in the IP-address at this stage (that's // why this code worked for R5 but didn't work for BONE). // In order to fix this problem, we simply use the IP-address of the // command-socket for the PORT-command: socklen_t size = sizeof(saData); // fetch port from data-socket: FailSockErr(getsockname(data, (struct sockaddr *)&saData, &size)); unsigned char *pap = (unsigned char *)&saData.sin_port; // fetch ip-address from cmd-socket: FailSockErr(getsockname(csSock->sSocket, (struct sockaddr *)&sa, &size)); unsigned char *sap = (unsigned char *)&sa.sin_addr.s_addr; s_printf(csSock, "port %d,%d,%d,%d,%d,%d\r\n", sap[0], sap[1], sap[2], sap[3], pap[0], pap[1]); } state = 5; break; } case 5: if (fPassive) { unsigned int sap[4]; unsigned int pap[2]; if ((r / 100) != 2) THROW(("Pasv command failed: %s", msg)); char* pos = strchr(msg,'('); if (!pos) THROW(("Answer to Pasv has unknown format: %s", msg)); int cnt = sscanf(pos+1, "%u,%u,%u,%u,%u,%u", &sap[0], &sap[1], &sap[2], &sap[3], &pap[0], &pap[1]); if (cnt != 6) THROW(("Could not parse answer to Pasv (%d of 6): %s", cnt, msg)); char ipAddr[20]; sprintf(ipAddr, "%d.%d.%d.%d", sap[0], sap[1], sap[2], sap[3]); saData.sin_port = htons(pap[0]*256+pap[1]); saData.sin_addr.s_addr = inet_addr(ipAddr); FailOSErr(connect(data, (struct sockaddr *)&saData, sizeof(saData))); } else { if ((r / 100) != 2) THROW(("Port command failed: %s", msg)); } if (action == 1) { s_printf(csSock, "retr %s\r\n", fURL.File()); state = 6; } else { s_printf(csSock, "stor %s\r\n", fURL.File()); state = 7; } break; case 6: if ((r / 100) == 1) { int ds; socklen_t size = sizeof(sa); if (fPassive) ds = data; else FailSockErr(ds = accept(data, (struct sockaddr *)&sa, &size)); try { do { FailSockErr(r = recv(ds, msg, 1024, 0)); if (r) fData.Write(msg, r); } while (r); closesocket(ds); } catch (HErr& e) { closesocket(ds); throw; } state = 8; } else THROW(("Failed to retrieve file: %s", msg)); break; case 7: if ((r / 100) == 1) { int ds; socklen_t size = sizeof(sa); if (fPassive) ds = data; else FailSockErr(ds = accept(data, (struct sockaddr *)&sa, &size)); try { FailSockErr(send(ds, fData.Buffer(), fData.BufferLength(), 0)); closesocket(ds); } catch (HErr& e) { closesocket(ds); throw; } state = 8; } else THROW(("Failed to store file: %s", msg)); break; case 8: if ((r / 100) != 2) THROW(("Failed to %s file: %s", action == 1 ? "retrieve" : "store", msg)); s_printf(csSock, "quit\r\n"); state = 0; break; } } s_close(csSock); if (!fPassive) closesocket(data); closesocket(ctrl); } catch (HErr& e) { if (csSock) s_close(csSock); if (ctrl) closesocket(ctrl); if (data) closesocket(data); throw; } } /* CFtpStream::Automaton */
BOOL CRWDSClientApp::InitInstance() { // 如果一个运行在 Windows XP 上的应用程序清单指定要 // 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式, //则需要 InitCommonControlsEx()。否则,将无法创建窗口。 INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // 将它设置为包括所有要在应用程序中使用的 // 公共控件类。 InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); CWinAppEx::InitInstance(); CLogin login; if(login.DoModal() == IDCANCEL) return FALSE; m_LoginAccount = login.GetLoginAccount(); m_LoginPassword = login.GetLoginPassword(); m_LoginOrgID = login.GetLoginOrgID(); m_LoginPermission = login.GetLoginPermission(); //if(VerifyLogin(m_LoginAccount, m_LoginPassword, &m_LoginOrgID, &m_LoginPermission) != KErrNone) // return FALSE; //获取权限 //m_LoginPermission = 0x01010101; // 初始化 OLE 库 if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } AfxEnableControlContainer(); EnableTaskbarInteraction(FALSE); // 使用 RichEdit 控件需要 AfxInitRichEdit2() // AfxInitRichEdit2(); // 标准初始化 // 如果未使用这些功能并希望减小 // 最终可执行文件的大小,则应移除下列 // 不需要的特定初始化例程 // 更改用于存储设置的注册表项 // TODO: 应适当修改该字符串, // 例如修改为公司或组织名 SetRegistryKey(_T("应用程序向导生成的本地应用程序")); LoadStdProfileSettings(4); // 加载标准 INI 文件选项(包括 MRU) InitContextMenuManager(); InitKeyboardManager(); InitTooltipManager(); CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; theApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams); // 注册应用程序的文档模板。文档模板 // 将用作文档、框架窗口和视图之间的连接 CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CRWDSClientDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CLASS(CRWDSClientView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); // 分析标准 shell 命令、DDE、打开文件操作的命令行 CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); // 调度在命令行中指定的命令。如果 // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 if (!ProcessShellCommand(cmdInfo)) return FALSE; // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // 仅当具有后缀时才调用 DragAcceptFiles // 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生 return TRUE; }