BOOL CPopupList::OnLButtonUp(CPoint point) { BOOL bDraw = FALSE; if(m_buttonState == enBSDown) { if((m_pImageClose != NULL) && m_rcClose.PtInRect(point)) { if(m_nHoverItem != -1) { //SendMessage(m_uMessageID, DELETE_ITEM, m_nHoverItem); SendMessageToParent(m_uMessageID, DELETE_ITEM, m_nHoverItem); bDraw = TRUE; } } else { bDraw = m_buttonState != enBSNormal; m_buttonState = enBSNormal; } } else if(m_nHoverItem != -1) { EditListItem &editListItem = m_vecItem.at(m_nHoverItem); if(editListItem.rcItem.PtInRect(point)) { //SendMessage(m_uMessageID, SELECT_ITEM, m_nHoverItem); SendMessageToParent(m_uMessageID, SELECT_ITEM, m_nHoverItem); } } return bDraw; }
int main(int argn, char** argv) { if (argn < 4) { printf("please, use three arguments: dll loads count, objects count and target hwnd\n"); return 0; } int dll_loads_c = std::stoi(argv[1]); int objects_c = std::stoi(argv[2]); HWND hwnd = (HWND)std::stoi(argv[3]); int objects_created = 0; for (int i = 0; i < dll_loads_c; i++) { HINSTANCE dll = 0; f_create_test_obj create_obj_f = (f_create_test_obj)LoadFunctionFromDll(L"Project1.dll", "CreateTestObject", dll); if (!create_obj_f) return -1; f_delete_test_obj delete_test_obj = (f_delete_test_obj)LoadFunctionFromDll(L"", "DeleteTestObject", dll); if (!delete_test_obj) return -1; SendMessageToParent(hwnd, i + 1); for (int j = 0; j < objects_c; j++) { CTestObject* test_obj = create_obj_f(); objects_created++; delete_test_obj(test_obj); } FreeLibrary(dll); } return objects_created; }
// 键盘事件处理 BOOL CPopupList::OnControlKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { int nItemCount = m_vecItem.size(); if((nChar == VK_UP) && (m_nHoverItem == 0)) // 关闭下拉列表 { OnNcCloseWindow(); return true; }else if((nChar == VK_UP) && (m_nHoverItem > 0)) // 向上移动一项 { m_nHoverItem--; SetItemPoint(); InvalidateRect(NULL); return true; }else if((nChar == VK_DOWN) && (m_nHoverItem < (nItemCount - 1))) // 向下移动一项 { m_nHoverItem++; SetItemPoint(); InvalidateRect(NULL); return true; }else if(nChar == VK_RETURN) // 回车键选择列表项 { SendMessageToParent(m_uMessageID, SELECT_ITEM, m_nHoverItem); return true; } return false; }
void CMyImage::OnLButtonUp(UINT nFlags, CPoint point) { ReleaseCapture(); bClicked = FALSE; Invalidate(); SendMessageToParent(BM_CLICK); }
void CGridDocs::SelectItem(int iRow, BOOL bSetFocus) { if(iSelRow != iRow) { CCellID cell; cell.col = 0; cell.row = iRow; if (!IsCellVisible(cell)) { CCellID idTopLeft = GetTopleftNonFixedCell(); int iPos; iPos = 0; for(int i = 1;i<iRow;i++) { iPos = iPos + GetRowHeight(i); } SetScrollPos(SB_VERT, iPos, TRUE); GetTopleftNonFixedCell(TRUE); Invalidate(); } iSelRow = iRow; SetSelectedRange(iRow,GetFixedColumnCount(),iRow,GetColumnCount()-1,TRUE,TRUE); SendMessageToParent(iRow,GetFixedColumnCount(), GVN_SELCHANGED); if(bSetFocus) SetFocus(); } }
BOOL CGridDocs::DeleteRow(long lRow) { if(lRow == iSelRow) { iSelRow = -1; SendMessageToParent(iSelRow,GetFixedColumnCount(), GVN_SELCHANGED); } return CGridCtrl::DeleteRow(lRow); }
void CXTPCoreTreeControl::OnCheckClicked(CXTPCoreTreeItem* pItem) { if (pItem->IsEnabled()) { pItem->SetChecked(!pItem->IsChecked()); SendMessageToParent(XTP_TVN_CHECKCHANGED); } }
void CGraphListCtrl::OnLButtonDblClk(UINT nFlags, CPoint point) { int nSel = GetItemByPoint(point); if(nSel >= 0) { SendMessageToParent(m_nCurSel, NM_DBLCLK); if(m_bAllowSel) SetCurSel(nSel); if(m_bAllowDefault) SetDefault(nSel); } CWnd::OnLButtonDblClk(nFlags, point); }
bool CScreensaverForm::SpecialKeyPressed(int key) { SallyAPI::GUI::CApplicationWindow* applicationWindow = dynamic_cast<SallyAPI::GUI::CApplicationWindow*> (m_pParent); if (applicationWindow == NULL) return false; switch (key) { case SPECIAL_KEY_PLAY: SendMessageToParent(this, GUI_APP_PLAY, GUI_BUTTON_CLICKED); return true; case SPECIAL_KEY_PREVIOUS: OnCommandScreensaverPrevious(); return true; case SPECIAL_KEY_NEXT: OnCommandScreensaverNext(); return true; case SPECIAL_KEY_ENTER: if (applicationWindow->IsEnabled() == true) // if no popup is open { SendMessageToParent(this, GUI_APP_SHOW_INFO, GUI_BUTTON_CLICKED); return true; } return false; case SPECIAL_KEY_SHUFFLE: SendMessageToParent(this, GUI_APP_SHUFFLE, GUI_BUTTON_CLICKED); return true; case SPECIAL_KEY_INFO: if (applicationWindow->IsEnabled() == true) // if no popup is open { SendMessageToParent(m_pScreensaverFormNotifier, NULL, GUI_FORM_CLICKED); return true; } return false; } return false; }
void CConsoleEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { if( nChar == 13 ) { MoveToEnd(); Refresh(); CString allText; GetWindowText(allText); allText = allText.Mid(m_last_title_pos); strncpy(m_cmd,allText, allText.GetLength() > (sizeof(m_cmd)-1) ? sizeof(m_cmd)-1 : allText.GetLength() ); // 回车 CEdit::OnChar(nChar, nRepCnt, nFlags); // 保存命令 SaveCommand(m_cmd); // 发送给父窗口 LRESULT result = SendMessageToParent(m_cmd,NM_CONSOLE_ENTER); // 清空命令 memset(m_cmd,0,sizeof(m_cmd)); // 根据父窗口返回值 // 父窗口返回0,表示处理完毕,需要返回初始命令状态 if (!result) { // 回车(空一行) CEdit::OnChar(nChar, nRepCnt, nFlags); // 添加初始命令提示 AddTexts(m_pretitle); } return; } else { if (nChar == 8) { if (GetCurrentPosition() <= m_last_title_pos) return; } // 输入必须在m_last_title_pos之后 if (GetCurrentPosition() < m_last_title_pos) MoveToEnd(); } /**************改用字符比较********************/ CEdit::OnChar(nChar, nRepCnt, nFlags); }
/*void CListDocs::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { if(lpDrawItemStruct->itemData<0) return; CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC); CRect rcItem(lpDrawItemStruct->rcItem); UINT uiFlags=ILD_TRANSPARENT; int nItem=lpDrawItemStruct->itemID; BOOL bFocus=(GetFocus()==this); static _TCHAR szBuff[MAX_PATH]; COLORREF BkText; if(lSelRow==lpDrawItemStruct->itemID) { BkText = ::GetSysColor(COLOR_HIGHLIGHT); pDC->SetTextColor(RGB(255,255,255)); } else { BkText = RGB(255,255,255); pDC->SetTextColor(RGB(0,0,0)); } CRect rcLabel; GetItemRect(nItem,rcLabel,LVIR_LABEL); UINT nJustify=DT_LEFT; CBrush b(BkText); CRect rcAllLabels; GetItemRect(nItem,rcAllLabels,LVIR_BOUNDS); LV_ITEM lvi; lvi.mask=LVIF_TEXT | LVIF_IMAGE | LVIF_STATE; lvi.iItem=nItem; lvi.iSubItem=0; lvi.pszText=szBuff; lvi.cchTextMax=sizeof(szBuff); lvi.stateMask=0xFFFF; // get all state flags GetItem(&lvi); BOOL bSelected=(bFocus || (GetStyle() & LVS_SHOWSELALWAYS)) && lvi.state & LVIS_SELECTED; bSelected=bSelected || (lvi.state & LVIS_DROPHILITED); pDC->FillRect(rcAllLabels,&b); long lCount; lCount = GetHeaderCtrl()->GetItemCount(); for(int i = 0;i<lCount;i++) { CString sName = GetItemText(nItem,i); GetSubItemRect(nItem,i,LVIR_BOUNDS,rcLabel); rcLabel.left = rcLabel.left + 2; pDC->DrawText(sName,-1,rcLabel,nJustify | DT_SINGLELINE | DT_NOPREFIX | DT_NOCLIP | DT_VCENTER); } } */ void CListDocs::SelectItem(long lItem) { if((lItem>-1)&&(lItem<GetItemCount())) { if(lSelRow != lItem) { if(lSelRow>-1) { RedrawItems(lSelRow,lSelRow); } lSelRow = lItem; RedrawItems(lSelRow,lSelRow); SendMessageToParent(NCLD_SELECTED); } } else { if(lSelRow>-1) RedrawItems(lSelRow,lSelRow); lSelRow = -1; SendMessageToParent(NCLD_SELECTED); } }
void CXTPCoreTreeControl::SetFocusedItem(CXTPCoreTreeItem* pItem) { if (m_pFocusedItem == pItem) return; if (pItem && pItem->IsLabel()) return; m_pFocusedItem = pItem; EnsureVisible(m_pFocusedItem); RedrawControl(); SendMessageToParent(TVN_SELCHANGED); }
void CGridBtnCellCombo::OnClick( CPoint PointCellRelative) { // immediately edit if user clicked on scroll down button picture int iCtlHit = RelPointInCtl( PointCellRelative); // Relative point coords // returns: Index of control that this point is within bounds of or -1 if no control matches BOOL bHitScrollDown = FALSE; if( iCtlHit >= 0) { // if user clicked on scroll down button picture, then show // the drop-down, too UINT uiType = GetDrawCtlType( iCtlHit); UINT uiState = GetDrawCtlState( iCtlHit); bHitScrollDown = ( uiType == DFC_SCROLL) && uiState & DFCS_SCROLLDOWN; } if( bHitScrollDown) { // invoke the edit, now -- similar to CGridCtl::OnEditCell() logic CGridCtrl* pGrid = GetGrid(); ASSERT( pGrid != NULL); CRect rect; if (!pGrid->GetCellRect( m_iRow, m_iCol, rect)) return; SendMessageToParent(m_iRow, m_iCol, GVN_BEGINLABELEDIT); Edit( m_iRow, m_iCol, rect, PointCellRelative, IDC_INPLACE_CONTROL, VK_LBUTTON); return; } CGridBtnCell::OnClick( PointCellRelative); }
/***************************************************************************** May mean end of a button click sequence or to edit text *****************************************************************************/ BOOL CGridBtnCellBase::Edit(int nRow, int nCol, CRect rect, CPoint point, UINT nID, UINT nChar) { ASSERT( m_pBtnDataBase != NULL); if( ProcessCtlClick(WM_LBUTTONUP, // Command that invoked. e.g. WM_LBUTTONDOWN point) ) // point to check for hit { SendMessageToParent( m_iRow, m_iCol, NM_CLICK); // tell parent about it return FALSE; // clicked a control rather than edited a value } const int iCtlNbr = GetDrawCtlNbr(); if( iCtlNbr > 0 ) { // if there's at least one left-aligned control and user pressed // space bar, activate that control if( GetDrawCtlAlign( 0) == CTL_ALIGN_LEFT || iCtlNbr == 1) { if( nChar == ' ' ) { // user hit space bar -- just like clicking a button ClickedCellCtl( WM_LBUTTONDOWN, // Command that invoked. e.g. WM_LBUTTONDOWN 0); // zero-based index of image to draw Sleep( 200); ClickedCellCtl( WM_LBUTTONUP, // Command that invoked. e.g. WM_LBUTTONDOWN 0); // zero-based index of image to draw SendMessageToParent( m_iRow, m_iCol, NM_CLICK); // tell parent about it return FALSE; // clicked a control rather than edited a value } } } // if no string text to edit, then typing a character may invoke a button if( HasCellText() ) { DWORD dwStyle = ES_LEFT; if (GetFormat() & DT_RIGHT) dwStyle = ES_RIGHT; else if (GetFormat() & DT_CENTER) dwStyle = ES_CENTER; m_ucEditing = TRUE; // InPlaceEdit auto-deletes itself CGridCtrl* pGrid = GetGrid(); CWnd* pWnd = new CInPlaceEdit(pGrid, rect, dwStyle, nID, nRow, nCol, GetText(), nChar); m_pBtnDataBase->SetEditWnd( pWnd); } else { // since no text to edit, maybe press a button -- check for hot keys int iCtl = HotKeyBtnMatch( (char)nChar); // hot key character if( iCtl >= 0 ) { // returns: index of button or -1 if no hot key matches ClickedCellCtl( WM_LBUTTONDOWN, // Command that invoked. e.g. WM_LBUTTONDOWN iCtl); // zero-based index of image to draw Sleep( 200); ClickedCellCtl( WM_LBUTTONUP, // Command that invoked. e.g. WM_LBUTTONDOWN iCtl); // zero-based index of image to draw SendMessageToParent( m_iRow, m_iCol, NM_CLICK); // tell parent about it return FALSE; // clicked a control rather than edited a value } } return TRUE; }
void CGridDocs::OnLButtonDblClk(UINT nFlags, CPoint point) { SendMessageToParent(iSelRow,GetFixedColumnCount(), Mess_OpenDoc); }
void CScreensaverForm::OnCommandScreensaverUp() { SendMessageToParent(this, GUI_APP_SHUFFLE, GUI_BUTTON_CLICKED); m_pTimerDiashow->Reset(); }
LRESULT ToolTip::runProc(UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_MOUSEACTIVATE: { return MA_NOACTIVATE; } case WM_CREATE: { TRACKMOUSEEVENT tme; tme.cbSize = sizeof(tme); tme.hwndTrack = _hSelf; tme.dwFlags = TME_LEAVE | TME_HOVER; tme.dwHoverTime = 5000; _bTrackMouse = _TrackMouseEvent(&tme); break; } case WM_LBUTTONDOWN: { _isLeftBtnDown = TRUE; SendMessageToParent(WM_LBUTTONDOWN); return TRUE; } case WM_LBUTTONUP: { _isLeftBtnDown = FALSE; SendMessageToParent(message); return TRUE; } case WM_RBUTTONUP: case WM_RBUTTONDOWN: case WM_LBUTTONDBLCLK: { SendMessageToParent(message); return TRUE; } case WM_MOUSEMOVE: { if ((_isLeftBtnDown == TRUE) && (MK_LBUTTON & wParam)) { SendMessageToParent(message); } if (!_bTrackMouse) { TRACKMOUSEEVENT tme; tme.cbSize = sizeof(tme); tme.hwndTrack = _hSelf; tme.dwFlags = TME_LEAVE | TME_HOVER; tme.dwHoverTime = 5000; _bTrackMouse = _TrackMouseEvent(&tme); } else _bTrackMouse = FALSE; return TRUE; } case WM_MOUSEHOVER: { destroy(); return TRUE; } case WM_MOUSELEAVE: { if (_isLeftBtnDown == FALSE) { destroy(); } else { _isLeftBtnDown = FALSE; } return TRUE; } } return ::CallWindowProc(_defaultProc, _hSelf, message, wParam, lParam); }