LRESULT CRoomListWnd::OnListItemDblClick(int idRealWnd, LPNMHDR pnmh, BOOL& bHandled) { LPNMITEMACTIVATE lpnmItem = (LPNMITEMACTIVATE)pnmh; if(1001 == idRealWnd){ // 点击教室列表 char strCheckBox[30]; if(m_wndListCtrl.InSubItemCheckBox(lpnmItem->ptAction, lpnmItem->iItem)){ sprintf(strCheckBox, "CHECKBOX CHANGED: %d", !m_wndListCtrl.GetCheckState(lpnmItem->iItem)); MessageBoxA(NULL, strCheckBox, "", MB_OK); } //char strListItem[30]; if(m_wndListCtrl.GetSelectedIndex() == lpnmItem->iItem){ //sprintf(strListItem, "Clicked id: %d", lpnmItem->iItem); //MessageBoxA(NULL, strListItem, "", MB_OK); EndDialog(0); XMessage_ShowClassroom msg; SendXMessage(&msg); } } bHandled = FALSE; return S_OK; }
LRESULT CRoomListWnd::OnInitDialog(HWND hWnd, LPARAM lparam) { if(m_wndListCtrl.Create( GetViewHWND(), NULL, NULL, WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SINGLESEL , 0, DlgControl_RoomListWin_Realwnd, NULL) == NULL){ return S_FALSE; } XMessage_GetRoomList msg; SendXMessage(&msg); _ColumnInit(); return S_OK; }
HRESULT CRoomMgr::OnNetMessage( const CMessage& msg ) { switch(msg.GetMessageType()) { case MSG_ACL_TYPE: const MSG_ACL* msgReal = dynamic_cast<const MSG_ACL*>(&msg); if(msgReal) { XMessage_GetRoomList_Result result; msgReal->GetRoomList(result.roomID); SendXMessage(&result); } } return S_OK; }
VOID CRoomListWnd::OnEnterRoomResult(XMessage_EnterRoom_Result *pMsg) { if(pMsg != nullptr) { if(pMsg->retTag == 0) { EndDialog(0); XMessage_ShowClassroom msg; SendXMessage(&msg); } else { MessageBox(_T("½øÈëʧ°Ü")); } } }
BOOL CLoginImpl::CheckLoginRequest( XMessage_Login* pMsg ) { CString& userName = pMsg->username; CString& pwd = pMsg->pwd; XMessage_LoginError error; if (userName.GetLength() == 0) { error.result = Result_UserName_LengthError; } else if (userName.Find(_T("sparta"))) { error.result = Result_UserName_InvalidChar; } else if (pwd.GetLength() == 0) { error.result = Result_Pwd_LengthError; } SendXMessage(&error); return ResultSucceeded(error.result); }
int main(int argc, char *argv[]) { XDisplay=XOpenDisplay(NULL); const char* windowClassName = "SkypeTab"; const char* wClPrefix = "--skypetab-class="; size_t wClPrefixLen = strlen(wClPrefix); for(int c=1; c<argc; c++) { if(strncmp(argv[c], wClPrefix, wClPrefixLen) == 0) { windowClassName=argv[c] + wClPrefixLen; } } Window instance = FindWindowByClass (windowClassName); if(instance!=0) { SendXMessage(instance, "ACT"); printf("Activated previous instance\n"); return 0; } char*newArgv[1024]; memset(newArgv, 0, sizeof(newArgv)); newArgv[0]="skype"; for(int c=1; c<argc; c++) newArgv[c]=argv[c]; execvp("skype", newArgv); int err=errno; char errS[1024]; errS[0]=0; strerror_r(err, errS, 1024); printf("execvp(\"skype\", ...) failed: %i %s\n", err, errS); }
HRESULT CLoginImpl::OnNetMessage( const CMessage& msg ) { switch(msg.GetMessageType()) { case MSG_ALI_TYPE: const MSG_ALI* msgReal = dynamic_cast<const MSG_ALI*>(&msg); if (msgReal) { XMessage_Login_Result loginResult; loginResult.success = msgReal->GetLoginResult()?FALSE:TRUE; loginResult.userToken = msgReal->GetToken(); BYTE* pGuid = (byte *)msgReal->GetATLGUID(); if (pGuid && msgReal->GetATLGUIDLen()==sizeof(loginResult.guid)/sizeof(loginResult.guid[0])) { memcpy(loginResult.guid,pGuid,sizeof(loginResult.guid)/sizeof(loginResult.guid[0])); } SendXMessage(&loginResult); } break; } return S_OK; }
LRESULT CRoomListWnd::OnListItemDblClick(int idRealWnd, LPNMHDR pnmh, BOOL& bHandled) { LPNMITEMACTIVATE lpnmItem = (LPNMITEMACTIVATE)pnmh; XMessage_EnterRoom msg; msg.roomId = 1000; msg.password = "******"; msg.verificationCode = "111"; SendXMessage(&msg); CString roomId; LVCOLUMN column; // m_wndListCtrl.GetItemText(lpnmItem->iItem, lpnmItem->iSubItem, roomId); //char strListItem[30]; if(m_wndListCtrl.GetSelectedIndex() == lpnmItem->iItem) { //sprintf(strListItem, "Clicked id: %d", lpnmItem->iItem); //MessageBoxA(NULL, strListItem, "", MB_OK); } bHandled = FALSE; return S_OK; }
static void * winMultiWindowWMProc (void *pArg) { WMProcArgPtr pProcArg = (WMProcArgPtr)pArg; WMInfoPtr pWMInfo = pProcArg->pWMInfo; /* Initialize the Window Manager */ winInitMultiWindowWM (pWMInfo, pProcArg); #if CYGMULTIWINDOW_DEBUG ErrorF ("winMultiWindowWMProc ()\n"); #endif /* Loop until we explicity break out */ for (;;) { WMMsgNodePtr pNode; /* Pop a message off of our queue */ pNode = PopMessage (&pWMInfo->wmMsgQueue); if (pNode == NULL) { /* Bail if PopMessage returns without a message */ /* NOTE: Remember that PopMessage is a blocking function. */ ErrorF ("winMultiWindowWMProc - Queue is Empty?\n"); pthread_exit (NULL); } #if CYGMULTIWINDOW_DEBUG ErrorF ("winMultiWindowWMProc - %d ms MSG: %d ID: %d\n", GetTickCount (), (int)pNode->msg.msg, (int)pNode->msg.dwID); #endif /* Branch on the message type */ switch (pNode->msg.msg) { #if 0 case WM_WM_MOVE: ErrorF ("\tWM_WM_MOVE\n"); break; case WM_WM_SIZE: ErrorF ("\tWM_WM_SIZE\n"); break; #endif case WM_WM_RAISE: #if CYGMULTIWINDOW_DEBUG ErrorF ("\tWM_WM_RAISE\n"); #endif /* Raise the window */ XRaiseWindow (pWMInfo->pDisplay, pNode->msg.iWindow); break; case WM_WM_LOWER: #if CYGMULTIWINDOW_DEBUG ErrorF ("\tWM_WM_LOWER\n"); #endif /* Lower the window */ XLowerWindow (pWMInfo->pDisplay, pNode->msg.iWindow); break; case WM_WM_MAP: #if CYGMULTIWINDOW_DEBUG ErrorF ("\tWM_WM_MAP\n"); #endif { XWindowAttributes attr; char *pszName; #if 0 XWMHints *pHints; #endif /* Get the window attributes */ XGetWindowAttributes (pWMInfo->pDisplay, pNode->msg.iWindow, &attr); if (!attr.override_redirect) { /* Set the Windows window name */ GetWindowName(pWMInfo->pDisplay, pNode->msg.iWindow, &pszName); SetWindowText (pNode->msg.hwndWindow, pszName); free (pszName); } } break; case WM_WM_UNMAP: #if CYGMULTIWINDOW_DEBUG ErrorF ("\tWM_WM_UNMAP\n"); #endif /* Unmap the window */ XUnmapWindow(pWMInfo->pDisplay, pNode->msg.iWindow); break; case WM_WM_KILL: #if CYGMULTIWINDOW_DEBUG ErrorF ("\tWM_WM_KILL\n"); #endif { int i, n, found = 0; Atom *protocols; /* --- */ if (XGetWMProtocols (pWMInfo->pDisplay, pNode->msg.iWindow, &protocols, &n)) { for (i = 0; i < n; ++i) if (protocols[i] == pWMInfo->atmWmDelete) ++found; XFree (protocols); } /* --- */ if (found) SendXMessage (pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmWmProtos, pWMInfo->atmWmDelete); else XKillClient (pWMInfo->pDisplay, pNode->msg.iWindow); } break; case WM_WM_ACTIVATE: #if CYGMULTIWINDOW_DEBUG ErrorF ("\tWM_WM_ACTIVATE\n"); #endif /* Set the input focus */ XSetInputFocus (pWMInfo->pDisplay, pNode->msg.iWindow, RevertToPointerRoot, CurrentTime); break; case WM_WM_X_EVENT: /* Process all X events in the Window Manager event queue */ FlushXEvents (pWMInfo); break; default: ErrorF ("winMultiWindowWMProc - Unknown Message.\n"); pthread_exit (NULL); break; } /* Free the retrieved message */ free (pNode); /* Flush any pending events on our display */ XFlush (pWMInfo->pDisplay); } /* Free the condition variable */ pthread_cond_destroy (&pWMInfo->wmMsgQueue.pcNotEmpty); /* Free the mutex variable */ pthread_mutex_destroy (&pWMInfo->wmMsgQueue.pmMutex); /* Free the passed-in argument */ free (pProcArg); #if CYGMULTIWINDOW_DEBUG ErrorF("-winMultiWindowWMProc ()\n"); #endif }