这篇教程C++ CallWindowProc函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中CallWindowProc函数的典型用法代码示例。如果您正苦于以下问题:C++ CallWindowProc函数的具体用法?C++ CallWindowProc怎么用?C++ CallWindowProc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了CallWindowProc函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: device_list_wndprocINT_PTR CALLBACK device_list_wndproc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ TCHAR tipText[80]; POINT pt; static int oldX, oldY; int newX, newY; LVHITTESTINFO hitTestInfo; LVITEM lvitem; device_context_t* dev_context; BOOL ignored; switch(message) { case WM_MOUSELEAVE: // The mouse pointer has left our window. // Deactivate the tooltip. SendMessage(g_hwndTrackingTT, TTM_TRACKACTIVATE, (WPARAM)FALSE, (LPARAM)&g_toolItem); g_TrackingMouse = FALSE; return FALSE; case WM_MOUSEMOVE: if (!g_TrackingMouse) { // The mouse has just entered the window. // Request notification when the mouse leaves. TRACKMOUSEEVENT tme = { sizeof(TRACKMOUSEEVENT) }; tme.hwndTrack = hDlg; tme.dwFlags = TME_LEAVE; TrackMouseEvent(&tme); // Activate the tooltip. SendMessage(g_hwndTrackingTT, TTM_TRACKACTIVATE, (WPARAM)TRUE, (LPARAM)&g_toolItem); g_TrackingMouse = TRUE; } newX = LOWORD(lParam); newY = HIWORD(lParam); // Make sure the mouse has actually moved. The presence of the tooltip // causes Windows to send the message continuously. if ((newX != oldX) || (newY != oldY)) { oldX = newX; oldY = newY; memset(&hitTestInfo,0,sizeof(hitTestInfo)); hitTestInfo.pt.x = newX; hitTestInfo.pt.y = newY; if ((ListView_HitTest(hDlg, &hitTestInfo) == -1) || newX > ListView_GetColumnWidth(hDlg, 0)) { safe_sprintf(tipText, sizeof(tipText) - 1, TEXT("%s"), TEXT("")); SendMessage(g_hwndTrackingTT, TTM_TRACKACTIVATE,FALSE, (LPARAM)&g_toolItem); } else { SendMessage(g_hwndTrackingTT, TTM_SETDELAYTIME,TTDT_INITIAL, 1000); memset(&lvitem, 0 , sizeof(lvitem)); lvitem.iItem = hitTestInfo.iItem; lvitem.mask = LVIF_PARAM; ignored = ListView_GetItem(hDlg,&lvitem); dev_context = (device_context_t*)lvitem.lParam; // Update the text. safe_sprintf(tipText, sizeof(tipText)-1 , TEXT("%s"), wdi_get_vendor_name(dev_context->wdi->vid)); SendMessage(g_hwndTrackingTT, TTM_TRACKACTIVATE,TRUE, (LPARAM)&g_toolItem); } g_toolItem.lpszText = tipText; SendMessage(g_hwndTrackingTT, TTM_SETTOOLINFO, 0, (LPARAM)&g_toolItem); // Position the tooltip. // The coordinates are adjusted so that the tooltip does not // overlap the mouse pointer. pt.x = newX; pt.y = newY; ClientToScreen(hDlg, &pt); SendMessage(g_hwndTrackingTT, TTM_TRACKPOSITION, 0, (LPARAM)MAKELONG(pt.x + 10, pt.y - 20)); } break; } return CallWindowProc(device_list_wndproc_orig, hDlg, message, wParam, lParam);}
开发者ID:markzh2015,项目名称:aboutusb,代码行数:90,
示例2: ConnListBoxProcLRESULT CALLBACK ConnListBoxProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ switch(message) { case WM_LBUTTONDOWN: { int index = SendMessage(hwnd, LB_ITEMFROMPOINT, 0, lParam); if(index >= 0x10000) { SendMessage(hwnd, LB_SETCURSEL, (DWORD)-1, 0L); } } break; case WM_RBUTTONDOWN: { POINT pos; MENUITEMINFO info; HMENU hMenu; DWORD dwID; int index = SendMessage(hwnd, LB_ITEMFROMPOINT, 0, lParam); if(index < 0x10000) { SendMessage(hwnd, LB_SETCURSEL, (DWORD)index, 1L); } else { SendMessage(hwnd, LB_SETCURSEL, (DWORD)-1, 0L); break; } hMenu = CreatePopupMenu(); memset(&info, 0, sizeof(MENUITEMINFO)); info.cbSize = sizeof(MENUITEMINFO); info.fMask = MIIM_ID | MIIM_TYPE; info.fType = MFT_STRING; info.wID = 1001; info.dwTypeData = "切断(&X)"; InsertMenuItem(hMenu, -1, true, &info); GetCursorPos(&pos); dwID = TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_RETURNCMD, pos.x, pos.y, 0, hwnd, NULL); DestroyMenu(hMenu); switch(dwID) { case 1001: SendMessage(guiWnd, WM_COMMAND, IDC_BUTTON6, NULL); break; } } break; } return CallWindowProc(wndOldConnListBox, hwnd, message, wParam, lParam);}
开发者ID:PyYoshi,项目名称:PeerCastIM-Mod,代码行数:61,
示例3: SpringWndProc static LRESULT CALLBACK SpringWndProc(HWND wnd, UINT msg, WPARAM wParam, LPARAM lParam) { if (mouse) { switch (msg) { case WM_XBUTTONDOWN: { if ((short)LOWORD(wParam) & MK_XBUTTON1) mouse->MousePress((short)LOWORD(lParam), (short)HIWORD(lParam), 4); if ((short)LOWORD(wParam) & MK_XBUTTON2) mouse->MousePress((short)LOWORD(lParam), (short)HIWORD(lParam), 5); } return 0; case WM_XBUTTONUP: { if ((short)LOWORD(wParam) & MK_XBUTTON1) mouse->MouseRelease((short)LOWORD(lParam), (short)HIWORD(lParam), 4); if ((short)LOWORD(wParam) & MK_XBUTTON2) mouse->MouseRelease((short)LOWORD(lParam), (short)HIWORD(lParam), 5); } return 0; } } switch (msg) { case WM_MOUSEMOVE: return wsdl::OnMouseMotion(wnd, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)wParam); case WM_MOUSEWHEEL: return wsdl::OnMouseWheel(wnd, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (int)(short)HIWORD(wParam), (UINT)(short)LOWORD(wParam)); //! can't use message crackers: they do not provide for passing uMsg case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONDOWN: case WM_RBUTTONUP: case WM_MBUTTONDOWN: case WM_MBUTTONUP: return wsdl::OnMouseButton(wnd, msg, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam), (UINT)wParam); case WM_SETCURSOR: { if (inst->hCursor!=NULL) { Uint16 hittest = LOWORD(lParam); if ( hittest == HTCLIENT ) { SetCursor(inst->hCursor); return TRUE; } } } break; case WM_ACTIVATE: { wsdl::ResetMouseButtons(); // wsdl::OnActivate(wnd, LOWORD(wParam), NULL, HIWORD(lParam)); // FIXME: move to SpringApp somehow and use GLContext.h instead! if (globalRendering->fullScreen) { if (LOWORD(wParam) == WA_INACTIVE) { FBO::GLContextLost(); } else if (LOWORD(wParam) == WA_ACTIVE) { FBO::GLContextReinit(); } } } break; } return CallWindowProc((WNDPROC)inst->sdl_wndproc, wnd, msg, wParam, lParam); }
开发者ID:Arkazon,项目名称:spring,代码行数:64,
示例4: WndProcLRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HWND hwndParent = hWndParent; HWND hwndImage = hWndImage; if (hwnd == hwndParent) { if (message == WM_SIZE) { ShowWindow(hwndImage, wParam == SIZE_MINIMIZED ? SW_HIDE : SW_SHOW); } if (message == WM_WINDOWPOSCHANGED) { SetWindowPos(hwndImage, hwndParent, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE); } return CallWindowProc( (long (__stdcall *)(HWND,unsigned int,unsigned int,long))oldProc, hwnd, message, wParam, lParam ); } switch (message) { case WM_PAINT: if (bgBitmap.bReady) { ECS(); PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); if (bgBitmap.iType == MIL_BITMAP) { HDC cdc = CreateCompatibleDC(hdc); SelectObject(cdc, bgBitmap.hBitmap); for (unsigned int x = 0; x < uWndWidth; x += bgBitmap.rPos.right) { for (unsigned int y = 0; y < uWndHeight; y += bgBitmap.rPos.bottom) { BitBlt(hdc, x, y, bgBitmap.rPos.right, bgBitmap.rPos.bottom, cdc, 0, 0, SRCCOPY); } } DeleteDC(cdc); } else { int r = GetRValue(bgBitmap.cGradientFrom) << 10; int g = GetGValue(bgBitmap.cGradientFrom) << 10; int b = GetBValue(bgBitmap.cGradientFrom) << 10; int dr = ((GetRValue(bgBitmap.cGradientTo) << 10) - r) / (int)uWndHeight * 4; int dg = ((GetGValue(bgBitmap.cGradientTo) << 10) - g) / (int)uWndHeight * 4; int db = ((GetBValue(bgBitmap.cGradientTo) << 10) - b) / (int)uWndHeight * 4; RECT rect; rect.left = 0; rect.top = 0; rect.right = uWndWidth; rect.bottom = 4; while (rect.top < (int)uWndHeight) { HBRUSH brush = CreateSolidBrush(RGB(r>>10,g>>10,b>>10)); FillRect(hdc, &rect, brush); DeleteObject(brush); rect.top+=4; rect.bottom+=4; r+=dr; g+=dg; b+=db; } } myImageList *img = bgBitmap.next; while (img) { if (img->iType == MIL_TEXT) { SetBkMode(hdc, TRANSPARENT); SetTextColor(hdc, img->cTextColor); SelectObject(hdc, img->hFont); DrawText(hdc, img->szText, -1, &img->rPos, DT_TOP | DT_LEFT | DT_NOPREFIX | DT_WORDBREAK); } else if (img->iType == MIL_BITMAP) { HDC cdc = CreateCompatibleDC(hdc); SelectObject(cdc, img->hBitmap); BitBlt(hdc, img->rPos.left, img->rPos.top, img->rPos.right - img->rPos.left, img->rPos.bottom - img->rPos.top, cdc, 0, 0, SRCCOPY); DeleteDC(cdc); } else { COLORREF cColor; HBITMAP bmAndBack, bmAndObject, bmAndMem, bmSave; HBITMAP bmBackOld, bmObjectOld, bmMemOld, bmSaveOld; HDC hdcMem, hdcBack, hdcObject, hdcTemp, hdcSave; POINT ptSize; HBITMAP hBitmap = img->hBitmap; hdcTemp = CreateCompatibleDC(hdc); SelectObject(hdcTemp, hBitmap); // Select the bitmap ptSize.x = img->rPos.right - img->rPos.left; ptSize.y = img->rPos.bottom - img->rPos.top; DPtoLP(hdcTemp, &ptSize, 1); // Convert from device to logical points // Create some DCs to hold temporary data. hdcBack = CreateCompatibleDC(hdc); hdcObject = CreateCompatibleDC(hdc); hdcMem = CreateCompatibleDC(hdc); hdcSave = CreateCompatibleDC(hdc); // Create a bitmap for each DC. DCs are required for a number of//.........这里部分代码省略.........
开发者ID:kichik,项目名称:nsis-1,代码行数:101,
示例5: NewButtonWndProc//// Subclass procedure for the OVEN pushbutton window instance.// The purpose of having this subclass is to do all "OVEN" related// messages separately here. In particular, it processes these messages:// - WM_MOUSEMOVE// - WM_CHAR// - WM_TIMER//LRESULT APIENTRY NewButtonWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { RECT rect; POINT pt; //HWND parent; switch (uMsg) { // The WM_MOUSEMOVE message is posted whenever the mouse is moved. // If no window is captured, this message is posted to the window where cursor is; // Otherwise, it is posted to the capture window. // // The default wndproc must NOT check for MouseMovement. // First entry into this code will be when cursor is over button. // // Use PtInRect() to check if the cursor is placed over the button window area. // If so, turn OVEN on. // Use PtInRect() to check if the cursor is placed outside the button window area. // If so, turn OVEN off. // // When the mouse is over OVEN button, capture window with SetCapture(), // so subsequent mousemove to outside of OVEN button will still be processed here. // case WM_MOUSEMOVE: GetClientRect(hwnd, &rect); // get rect of button window pt.x = LOWORD(lParam); // is this client co-ordinate the button, or parent window? pt.y = HIWORD(lParam); // fill start here if(PtInRect(&rect, pt)) { SetToasted(hwnd, 1); SetCapture(hwnd); }else { SetToasted(hwnd, 0); ReleaseCapture(); } // fill end here return 0; // The WM_CHAR message is generated by the OS when a keyboard key is pressed, // and the system calls TranslateMessage(). By default this message is // sent to the window where keyboard was pressed, or the to keyboard // focus window (which we have set to be the OVEN button using SetFocus()). // That's why we are processing this message here, in the OVEN button subclass proc. case WM_CHAR: // fill start here switch(wParam) { case 'b': SetToasted(hwnd, 1); SetTimer(hwnd, 1, 5000, NULL); Sleep(5000); } // fill end here return 0; case WM_TIMER: // this message is generated when timer timesout. SetToasted(hwnd, 0); // set OVEN OFF return 0; } // return to original wndproc and process all other messages there. return CallWindowProc((WNDPROC)GetClassLong(GetParent(hwnd),0), hwnd, uMsg, wParam, lParam); }
开发者ID:chapmanc,项目名称:term3,代码行数:76,
示例6: switchLRESULT CALLBACK CCoolMenu::MenuProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ WNDPROC pWndProc = (WNDPROC)::GetProp( hWnd, wpnOldProc ); switch ( uMsg ) { case WM_NCCALCSIZE: { NCCALCSIZE_PARAMS* pCalc = (NCCALCSIZE_PARAMS*)lParam; pCalc->rgrc[0].left ++; pCalc->rgrc[0].top ++; pCalc->rgrc[0].right --; pCalc->rgrc[0].bottom --; } return 0; case WM_WINDOWPOSCHANGING: if ( WINDOWPOS* pWndPos = (WINDOWPOS*)lParam ) { DWORD nStyle = GetWindowLong( hWnd, GWL_STYLE ); DWORD nExStyle = GetWindowLong( hWnd, GWL_EXSTYLE ); CRect rc( 0, 0, 32, 32 ); AdjustWindowRectEx( &rc, nStyle, FALSE, nExStyle ); pWndPos->cx -= ( rc.Width() - 34 ); pWndPos->cy -= ( rc.Height() - 34 ) - 1; if ( pWndPos->x != m_nEdgeLeft || pWndPos->y != m_nEdgeTop ) pWndPos->x ++; } break; case WM_PRINT: if ( ( lParam & PRF_CHECKVISIBLE ) && ! IsWindowVisible( hWnd ) ) return 0; if ( lParam & PRF_NONCLIENT ) { CWnd* pWnd = CWnd::FromHandle( hWnd ); CDC* pDC = CDC::FromHandle( (HDC)wParam ); CRect rc; pWnd->GetWindowRect( &rc ); BOOL bEdge = ( rc.left == m_nEdgeLeft && rc.top == m_nEdgeTop ); rc.OffsetRect( -rc.left, -rc.top ); pDC->Draw3dRect( &rc, CoolInterface.m_crDisabled, CoolInterface.m_crDisabled ); if ( bEdge ) pDC->FillSolidRect( rc.left + 1, rc.top, min( rc.Width(), m_nEdgeSize ) - 2, 1, CoolInterface.m_crBackNormal ); } if ( lParam & PRF_CLIENT ) { CWnd* pWnd = CWnd::FromHandle( hWnd ); CDC* pDC = CDC::FromHandle( (HDC)wParam ); CBitmap bmBuf, *pbmOld; CDC dcBuf; CRect rc; pWnd->GetClientRect( &rc ); dcBuf.CreateCompatibleDC( pDC ); bmBuf.CreateCompatibleBitmap( pDC, rc.Width(), rc.Height() ); pbmOld = (CBitmap*)dcBuf.SelectObject( &bmBuf ); m_bPrinted = TRUE; dcBuf.FillSolidRect( &rc, GetSysColor( COLOR_MENU ) ); SendMessage( hWnd, WM_PRINTCLIENT, (WPARAM)dcBuf.GetSafeHdc(), 0 ); pDC->BitBlt( 1, 1, rc.Width(), rc.Height(), &dcBuf, 0, 0, SRCCOPY ); dcBuf.SelectObject( pbmOld ); } return 0; case WM_NCPAINT: { CWnd* pWnd = CWnd::FromHandle( hWnd ); CWindowDC dc( pWnd ); CRect rc; pWnd->GetWindowRect( &rc ); BOOL bEdge = ( rc.left == m_nEdgeLeft && rc.top == m_nEdgeTop ); rc.OffsetRect( -rc.left, -rc.top ); dc.Draw3dRect( &rc, CoolInterface.m_crDisabled, CoolInterface.m_crDisabled ); if ( bEdge ) dc.FillSolidRect( rc.left + 1, rc.top, min( rc.Width(), m_nEdgeSize ) - 2, 1, CoolInterface.m_crBackNormal ); } return 0; case WM_PAINT: m_bPrinted = FALSE; break; case WM_NCDESTROY: ::RemoveProp( hWnd, wpnOldProc ); break; } return CallWindowProc( pWndProc, hWnd, uMsg, wParam, lParam );}
开发者ID:pics860,项目名称:callcenter,代码行数:96,
示例7: StandButtonProc//.........这里部分代码省略......... RedrawWindow(gameEngine->getHWnd(), NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); Sleep(500); // // See if we need additional cards. // while (true) { std::vector<int>* vals = dealerHand->GetValues(); bool done = false; for (int i = 0; i < vals->size(); i++) { // Dealer must stop taking cards // if he has a value of 17 or higher. if (vals->at(i) >= 17) { done = true; break; } } if (done) { break; } PlaySound(L"sound-flipcard.wav", NULL, SND_FILENAME | SND_ASYNC); dealerHand->dealCard(false); RedrawWindow(gameEngine->getHWnd(), NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); Sleep(500); } // // Determine winner. Update balance amounts. // // table->setState(TABLE_STATE_READY); std::vector<int>* dealerValues = dealerHand->GetValues(); std::vector<int>* playerValues = playerHand->GetValues(); int dealerFinal = 0; int playerFinal = 0; for (int i = 0; i < dealerValues->size(); i++) { if (dealerValues->at(i) > dealerFinal && dealerValues->at(i) < 22) { dealerFinal = dealerValues->at(i); } } for (int i = 0; i < playerValues->size(); i++) { if (playerValues->at(i) > playerFinal && playerValues->at(i) < 22) { playerFinal = playerValues->at(i); } } table->setState(TABLE_STATE_FINISHED); // If values are same, this is a push. if (dealerFinal == playerFinal) { updateTextarea(hStaticTableMiddleMessage, "Push"); // Return player's bet money. int bet = playerHand->getBetAmount(); user->setBalance(user->getBalance() + bet); } else if (dealerFinal < playerFinal) { // Player wins, return bet and winning. updateTextarea(hStaticTableMiddleMessage, "Player Wins!"); int bet = playerHand->getBetAmount(); user->setBalance(user->getBalance() + (bet*2) ); } else if (dealerFinal > playerFinal) { // No need to update cash. Has already been deducted // at time of bet. Update the middle message area. updateTextarea(hStaticTableMiddleMessage, "Dealer Wins."); } RedrawWindow(gameEngine->getHWnd(), NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } return CallWindowProc(oldStandButtonProc, hwnd, msg, wp, lp);}
开发者ID:jsimpson9,项目名称:win32proto,代码行数:101,
示例8: PhListTickstatic VOID PhListTick( __in PPH_EXTLV_CONTEXT Context ){ HWND hwnd = Context->Handle; ULONG tickCount; BOOLEAN redrawDisabled = FALSE; PPH_LIST itemsToRemove = NULL; PH_HASHTABLE_ENUM_CONTEXT enumContext; PPH_TICK_ENTRY entry; if (!Context->TickHashtable) return; tickCount = GetTickCount(); // First pass PhBeginEnumHashtable(Context->TickHashtable, &enumContext); while (entry = PhNextEnumHashtable(&enumContext)) { LVITEM item; PH_ITEM_STATE itemState; if (PhRoundNumber(tickCount - entry->TickCount, PH_DURATION_MULT) < Context->HighlightingDuration) continue; item.mask = LVIF_STATE; item.iItem = ListView_MapIDToIndex(hwnd, entry->Id); item.iSubItem = 0; item.stateMask = LVIS_STATEIMAGEMASK; CallWindowProc(Context->OldWndProc, hwnd, LVM_GETITEM, 0, (LPARAM)&item); itemState = PH_GET_ITEM_STATE(item.state); if (itemState == NewItemState) { item.state = INDEXTOSTATEIMAGEMASK(NormalItemState); CallWindowProc(Context->OldWndProc, hwnd, LVM_SETITEM, 0, (LPARAM)&item); if (!itemsToRemove) itemsToRemove = PhCreateList(2); PhAddItemList(itemsToRemove, (PVOID)entry->Id); entry->TickCount = tickCount; } } // Second pass // This pass is specifically for deleting items. PhBeginEnumHashtable(Context->TickHashtable, &enumContext); while (entry = PhNextEnumHashtable(&enumContext)) { LVITEM item; PH_ITEM_STATE itemState; if (itemsToRemove) { if (PhFindItemList(itemsToRemove, (PVOID)entry->Id) != -1) continue; } if (PhRoundNumber(tickCount - entry->TickCount, PH_DURATION_MULT) < Context->HighlightingDuration) continue; item.mask = LVIF_STATE; item.iItem = ListView_MapIDToIndex(hwnd, entry->Id); item.iSubItem = 0; item.stateMask = LVIS_STATEIMAGEMASK; CallWindowProc(Context->OldWndProc, hwnd, LVM_GETITEM, 0, (LPARAM)&item); itemState = PH_GET_ITEM_STATE(item.state); if (itemState == RemovingItemState) { if (!redrawDisabled) { ExtendedListView_SetRedraw(hwnd, FALSE); redrawDisabled = TRUE; } CallWindowProc(Context->OldWndProc, hwnd, LVM_DELETEITEM, item.iItem, 0); if (!itemsToRemove) itemsToRemove = PhCreateList(2); PhAddItemList(itemsToRemove, (PVOID)entry->Id); entry->TickCount = tickCount; } } if (redrawDisabled) { ExtendedListView_SetRedraw(hwnd, TRUE); } if (itemsToRemove)//.........这里部分代码省略.........
开发者ID:john-peterson,项目名称:processhacker,代码行数:101,
示例9: SubClassEdit/*------------------------------------------------------------------------Procedure: SubClassEdit ID:1Purpose: Handles messages to the editboxInput: Output: Errors:--------------------------------------------------------------------------Edit History: 14 Sept 2003 - Chris Watford [email C++ CallWorker函数代码示例 C++ CallService函数代码示例
|