コード例 #1
0
ファイル: PopupList.cpp プロジェクト: Zhuguoping/DuiVision
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;
}
コード例 #2
0
ファイル: main.cpp プロジェクト: prohor33/test-dll-console
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;
}
コード例 #3
0
ファイル: PopupList.cpp プロジェクト: Zhuguoping/DuiVision
// 键盘事件处理
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;
}
コード例 #4
0
ファイル: MyImage.cpp プロジェクト: BeL1kOFF/SHATE
void CMyImage::OnLButtonUp(UINT nFlags, CPoint point)
{
	ReleaseCapture();
	bClicked = FALSE;
	Invalidate();
	SendMessageToParent(BM_CLICK);
}
コード例 #5
0
ファイル: GridDocs.cpp プロジェクト: BeL1kOFF/SHATE
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();
		
	}
}
コード例 #6
0
ファイル: GridDocs.cpp プロジェクト: BeL1kOFF/SHATE
BOOL CGridDocs::DeleteRow(long lRow)
{
	if(lRow == iSelRow)
	{
		iSelRow = -1;
		SendMessageToParent(iSelRow,GetFixedColumnCount(), GVN_SELCHANGED);
	}
	return CGridCtrl::DeleteRow(lRow);
}
コード例 #7
0
void CXTPCoreTreeControl::OnCheckClicked(CXTPCoreTreeItem* pItem)
{
	if (pItem->IsEnabled())
	{
		pItem->SetChecked(!pItem->IsChecked());

		SendMessageToParent(XTP_TVN_CHECKCHANGED);
	}
}
コード例 #8
0
ファイル: GraphListCtrl.cpp プロジェクト: kanbang/SVN
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);
}
コード例 #9
0
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;
}
コード例 #10
0
ファイル: ConsoleEdit.cpp プロジェクト: diduoren/youeryuan
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);
}
コード例 #11
0
ファイル: ListDocs.cpp プロジェクト: BeL1kOFF/SHATE
/*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);
	}
}
コード例 #12
0
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);
}
コード例 #13
0
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);
}
コード例 #14
0
/*****************************************************************************
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;
}
コード例 #15
0
ファイル: GridDocs.cpp プロジェクト: BeL1kOFF/SHATE
void CGridDocs::OnLButtonDblClk(UINT nFlags, CPoint point)
{
	SendMessageToParent(iSelRow,GetFixedColumnCount(), Mess_OpenDoc);
}
コード例 #16
0
void CScreensaverForm::OnCommandScreensaverUp()
{
	SendMessageToParent(this, GUI_APP_SHUFFLE, GUI_BUTTON_CLICKED);
	m_pTimerDiashow->Reset();
}
コード例 #17
0
ファイル: ToolTip.cpp プロジェクト: JansenGao/npp-explorer
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);
}