这篇教程C++ BeginPaint函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中BeginPaint函数的典型用法代码示例。如果您正苦于以下问题:C++ BeginPaint函数的具体用法?C++ BeginPaint怎么用?C++ BeginPaint使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了BeginPaint函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: MyWinFunc/* Window message handle function */LRESULT CALLBACK MyWinFunc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ){ INT i; HDC hDC; PAINTSTRUCT ps; static INT w, h; static BITMAP bm; static HBITMAP hBm, hBmLogo; static HDC hMemDC, hMemDCLogo; switch (Msg) { case WM_CREATE: SetTimer(hWnd, 30, 10, NULL); hBmLogo = LoadImage(NULL, "GLOBE.BMP", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); GetObject(hBmLogo, sizeof(bm), &bm); hDC = GetDC(hWnd); hMemDC = CreateCompatibleDC(hDC); hMemDCLogo = CreateCompatibleDC(hDC); SelectObject(hMemDCLogo, hBmLogo); ReleaseDC(hWnd, hDC); return 0; case WM_SIZE: w = LOWORD(lParam); h = HIWORD(lParam); if (hBm != NULL) DeleteObject(hBm); hDC = GetDC(hWnd); hBm = CreateCompatibleBitmap(hDC, w, h); ReleaseDC(hWnd, hDC); SelectObject(hMemDC, hBm); SendMessage(hWnd, WM_TIMER, 0, 0); return 0; case WM_TIMER: Rectangle(hMemDC, 0, 0, w + 1, h + 1); /* BitBlt(hMemDC, 0, 0, bm.bmWidth, bm.bmHeight, hMemDCLogo, 0, 0, SRCCOPY); */ SetStretchBltMode(hMemDC, COLORONCOLOR); StretchBlt(hMemDC, 0, 0, w, h, hMemDCLogo, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY); DrawEye(hWnd, hMemDC, 100, 100, 50, 15); DrawEye(hWnd, hMemDC, 300, 200, 150, 30); DrawEye(hWnd, hMemDC, 100, 200, 50, 30); DrawEye(hWnd, hMemDC, 400, 200, 130, 30); DrawEye(hWnd, hMemDC, w / 2, h / 2, 80, 15); srand(59); for (i = 0; i < 30; i++) DrawEye(hWnd, hMemDC, rand() % 800, rand() % 700, 30, 8); SetBkMode(hMemDC, TRANSPARENT); SetTextColor(hMemDC, RGB(255, 0, 0)); TextOut(hMemDC, 30, 30, "30!", 3); InvalidateRect(hWnd, NULL, FALSE); return 0; case WM_PAINT: hDC = BeginPaint(hWnd, &ps); BitBlt(hDC, 0, 0, w, h, hMemDC, 0, 0, SRCCOPY); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: KillTimer(hWnd, 30); DeleteDC(hMemDC); DeleteObject(hBm); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, Msg, wParam, lParam);} /* End of 'MyWinFunc' function */
开发者ID:CGSG,项目名称:SUM2016,代码行数:73,
示例2: WndProc//.........这里部分代码省略......... FocusedConsole = SearchConsole(LastConsole); if (FocusedConsole != NULL && FocusedConsole->hConsole != NULL) { FocusedConsole->Enable = FALSE; EnableWindow(FocusedConsole->hWndCon,FALSE); gfDoNotKillFocus = TRUE; } } else{ DWORD i; LockConsoleTable(); for ( i = 1; i < NumberOfConsoleTable; i ++){ FocusedConsole = ConsoleTable[i]; if (FocusedConsole != NULL) { if ((FocusedConsole->hConsole != NULL)&& (!FocusedConsole->Enable)&& (!IsWindowEnabled(FocusedConsole->hWndCon))){ EnableWindow(FocusedConsole->hWndCon,TRUE); FocusedConsole->Enable = TRUE; if (!FocusedConsole->LateRemove) SetForegroundWindow(FocusedConsole->hWndCon); } } } UnlockConsoleTable(); } return DefWindowProc(hWnd, Message, wParam, lParam); break; }#ifdef DEBUG_MODE case WM_SETFOCUS: CreateCaret( hWnd, NULL, IsUnicodeFullWidth( ConvertLine[xPos] ) ? CaretWidth*2 : CaretWidth, (UINT)cyMetrics ); SetCaretPos( xPos * cxMetrics, 0 ); ShowCaret( hWnd ); break; case WM_KILLFOCUS: HideCaret( hWnd ); DestroyCaret(); break; case WM_PAINT: { PAINTSTRUCT pstruc; HDC hDC; hDC = BeginPaint(hWnd,&pstruc); ReDraw(hWnd); EndPaint(hWnd,&pstruc); break; }#endif case WM_QUERYENDSESSION:#ifdef HIRSHI_DEBUG /* * If specified ntsd debugger on this process, * then never catch WM_QUERYENDSESSION when logoff/shutdown because * this process will terminate when ntsd process terminated. */ { int i; i = MessageBox(hWnd,TEXT("Could you approve exit session?"), TEXT("Console IME"), MB_ICONSTOP | MB_YESNO); return (i == IDYES ? TRUE : FALSE); }#endif return TRUE; // Logoff or shutdown time. case WM_ENDSESSION: DBGPRINT(("CONIME:Recieve WM_ENDSESSION/n")); ExitList(hWnd); return 0; default: // Passes it on if unproccessed return DefWindowProc(hWnd, Message, wParam, lParam); } } except (InputExceptionFilter(GetExceptionInformation())) { if (dwConsoleThreadId) { DBGPRINT(("CONIME: Exception on WndProc!!/n")); UnregisterConsoleIME(); dwConsoleThreadId = 0; DestroyWindow(hWnd); return 0; } } return TRUE;}
开发者ID:conioh,项目名称:os-design,代码行数:101,
示例3: switchLRESULT debugwin_info::window_proc(UINT message, WPARAM wparam, LPARAM lparam){ // handle a few messages switch (message) { // paint: draw bezels as necessary case WM_PAINT: { PAINTSTRUCT pstruct; HDC dc = BeginPaint(m_wnd, &pstruct); draw_contents(dc); EndPaint(m_wnd, &pstruct); break; } // keydown: handle debugger keys case WM_KEYDOWN: if (handle_key(wparam, lparam)) set_ignore_char_lparam(lparam); break; // char: ignore chars associated with keys we've handled case WM_CHAR: if (check_ignore_char_lparam(lparam)) { if (waiting_for_debugger() || !seq_pressed()) return DefWindowProc(m_wnd, message, wparam, lparam); } break; // activate: set the focus case WM_ACTIVATE: if (wparam != WA_INACTIVE) set_default_focus(); break; // get min/max info: set the minimum window size case WM_GETMINMAXINFO: { MINMAXINFO *minmax = (MINMAXINFO *)lparam; minmax->ptMinTrackSize.x = m_minwidth; minmax->ptMinTrackSize.y = m_minheight; minmax->ptMaxSize.x = minmax->ptMaxTrackSize.x = m_maxwidth; minmax->ptMaxSize.y = minmax->ptMaxTrackSize.y = m_maxheight; break; } // sizing: recompute child window locations case WM_SIZE: case WM_SIZING: recompute_children(); InvalidateRect(m_wnd, NULL, FALSE); break; // mouse wheel: forward to the first view case WM_MOUSEWHEEL: { static int units_carryover = 0; UINT lines_per_click; if (!SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, &lines_per_click, 0)) lines_per_click = 3; int const units = GET_WHEEL_DELTA_WPARAM(wparam) + units_carryover; int const clicks = units / WHEEL_DELTA; units_carryover = units % WHEEL_DELTA; int const delta = clicks * lines_per_click; int viewnum = 0; POINT point; // figure out which view we are hovering over GetCursorPos(&point); ScreenToClient(m_wnd, &point); HWND const child = ChildWindowFromPoint(m_wnd, point); if (child) { for (viewnum = 0; viewnum < MAX_VIEWS; viewnum++) { if ((m_views[viewnum] != NULL) && m_views[viewnum]->owns_window(child)) break; } if (viewnum == MAX_VIEWS) break; } // send the appropriate message to this view's scrollbar if (m_views[viewnum] != NULL) m_views[viewnum]->send_vscroll(delta); break; } // activate: set the focus case WM_INITMENU: update_menu(); break; // command: handle a comment case WM_COMMAND://.........这里部分代码省略.........
开发者ID:robsonfr,项目名称:mame,代码行数:101,
示例4: WinProcLRESULT CALLBACK WinProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) { PAINTSTRUCT Ps; switch(msg) { case WM_CREATE: { /** * Create AddFood Button */ HFONT hFont = CreateFont(30,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLINE_PRECIS, CLIP_DEFAULT_PRECIS,NULL, VARIABLE_PITCH,TEXT("Impact")); HWND hButtonAddFood = CreateWindowEx(NULL, "BUTTON", "ADD FOOD", WS_TABSTOP|WS_VISIBLE| WS_CHILD|BS_DEFPUSHBUTTON|BS_TOP, 10, 150, 100, 25, hWnd, (HMENU)BUTTON_ADD_FOOD, GetModuleHandle(NULL), NULL); /** * Create button ShowFoodNumber */ HWND hShowFoodNumber = CreateWindowEx(NULL, "BUTTON", "Funny", WS_TABSTOP|WS_VISIBLE| WS_CHILD|BS_DEFPUSHBUTTON|BS_TOP, 10, 180, 300, 40, hWnd, (HMENU)BUTTON_DISPLAY_FOOD_NR, GetModuleHandle(NULL), NULL); SendMessage (hShowFoodNumber, WM_SETFONT, WPARAM (hFont), TRUE); /** * Draw Food List (In a input box) */ hFoodList = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_READONLY| ES_MULTILINE, 10, 40, 300, 100, hWnd, (HMENU)INPUT_TEXT_SHOW_FOOD, GetModuleHandle(NULL), NULL); /** * Draw main Input food field */ hInputFood = CreateWindowEx( (DWORD)NULL, TEXT("edit"), "", WS_VISIBLE | WS_CHILD | WS_BORDER, 120, 150, 190, 25, hWnd, (HMENU)INPUT_TEXT_ADD_FOOD, GetModuleHandle(NULL), NULL); } break; case WM_PAINT: { HDC hdc = BeginPaint(hWnd, &Ps); RECT rect; /** * Draw Text */ // Second Text char foodNrMessage[256] = "Number : "; char nr[50]; strcat(foodNrMessage, itoa(foodNumber, nr, 10)); SetBkMode(hdc, TRANSPARENT); SetRect(&updateRect, 210, 10, 300, 30); DrawText( hdc, foodNrMessage, -1, &updateRect, DT_SINGLELINE | DT_NOCLIP ) ; // First Text HFONT hFont = CreateFont(25,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLINE_PRECIS,//.........这里部分代码省略.........
开发者ID:TUM-FAF,项目名称:WP-FAF-111-Terman-Sergiu,代码行数:101,
示例5: WndProc// Processes messages for main WindowLRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){ PTOUCHINPUT pInputs; TOUCHINPUT tInput; HTOUCHINPUT hInput; int iNumContacts; POINT ptInputs; PAINTSTRUCT ps; // Handle each type of inData and based on which event we handle continue processing // the inData for manipulations by calling the ComTouchDriver switch (msg) { case WM_TOUCH: iNumContacts = LOWORD(wParam); hInput = (HTOUCHINPUT)lParam; pInputs = new (std::nothrow) TOUCHINPUT[iNumContacts]; // Get each touch input info and feed each TOUCHINPUT into the process input handler if(pInputs != NULL) { if(GetTouchInputInfo(hInput, iNumContacts, pInputs, sizeof(TOUCHINPUT))) { for(int i = 0; i < iNumContacts; i++) { // Bring touch input info into client coordinates ptInputs.x = pInputs[i].x/100; ptInputs.y = pInputs[i].y/100; ScreenToClient(g_hWnd, &ptInputs); pInputs[i].x = ptInputs.x; pInputs[i].y = ptInputs.y; g_ctDriver->ProcessInputEvent(&pInputs[i]); } g_ctDriver->ProcessChanges(); } } delete [] pInputs; CloseTouchInputHandle(hInput); break; // For each Mouse event build a TOUCHINPUT struct and feed into the process input handler case WM_LBUTTONDOWN: FillInputData(&tInput, MOUSE_CURSOR_ID, TOUCHEVENTF_DOWN, (DWORD)GetMessageTime(),LOWORD(lParam),HIWORD(lParam)); g_ctDriver->ProcessInputEvent(&tInput); break; case WM_MOUSEMOVE: if(LOWORD(wParam) == MK_LBUTTON) { FillInputData(&tInput, MOUSE_CURSOR_ID, TOUCHEVENTF_MOVE, (DWORD)GetMessageTime(),LOWORD(lParam), HIWORD(lParam)); g_ctDriver->ProcessInputEvent(&tInput); g_ctDriver->ProcessChanges(); } break; case WM_LBUTTONUP: FillInputData(&tInput, MOUSE_CURSOR_ID, TOUCHEVENTF_UP, (DWORD)GetMessageTime(),LOWORD(lParam), HIWORD(lParam)); g_ctDriver->ProcessInputEvent(&tInput); break; case WM_DESTROY: if(g_ctDriver) { delete g_ctDriver; } PostQuitMessage(0); return 1; case WM_SIZE: g_iCWidth = LOWORD(lParam); g_iCHeight = HIWORD(lParam); break; case WM_PAINT: BeginPaint(g_hWnd, &ps); g_ctDriver->RenderInitialState(g_iCWidth, g_iCHeight); EndPaint(g_hWnd, &ps); break; case WM_TIMER: g_ctDriver->ProcessChanges(); break; default://.........这里部分代码省略.........
开发者ID:FrankAlbis,项目名称:Win7_SDK_Samples,代码行数:101,
示例6: WndProc//.........这里部分代码省略......... if (wmId == ID_WARN_DOWNLOADCOMPLETE) ss << L"downloaded successfully."; else ss << L"failed to download."; MessageBox(hWnd, ss.str().c_str(), L"File Download", MB_OK | MB_ICONINFORMATION); } return 0;#ifdef SHOW_TOOLBAR_UI case IDC_NAV_BACK: // Back button if (browser.get()) browser->GoBack(); return 0; case IDC_NAV_FORWARD: // Forward button if (browser.get()) browser->GoForward(); return 0; case IDC_NAV_RELOAD: // Reload button if (browser.get()) browser->Reload(); return 0; case IDC_NAV_STOP: // Stop button if (browser.get()) browser->StopLoad(); return 0;#endif // SHOW_TOOLBAR_UI } break; } case WM_PAINT: hdc = BeginPaint(hWnd, &ps); EndPaint(hWnd, &ps); return 0; case WM_SETFOCUS: if (g_handler.get() && g_handler->GetBrowser()) { // Pass focus to the browser window CefWindowHandle hwnd = g_handler->GetBrowser()->GetHost()->GetWindowHandle(); if (hwnd) PostMessage(hwnd, WM_SETFOCUS, wParam, NULL); } return 0; case WM_SIZE: // Minimizing resizes the window to 0x0 which causes our layout to go all // screwy, so we just ignore it. if (wParam != SIZE_MINIMIZED && g_handler.get() && g_handler->GetBrowser()) { CefWindowHandle hwnd = g_handler->GetBrowser()->GetHost()->GetWindowHandle(); if (hwnd) { // Resize the browser window and address bar to match the new frame // window size RECT rect; GetClientRect(hWnd, &rect);#ifdef SHOW_TOOLBAR_UI rect.top += URLBAR_HEIGHT; int urloffset = rect.left + BUTTON_WIDTH * 4;#endif // SHOW_TOOLBAR_UI HDWP hdwp = BeginDeferWindowPos(1);
开发者ID:David-Mulder,项目名称:brackets-shell,代码行数:67,
示例7: _ASSERTE/** * @param hwnd - window handle. * @param uMsg - message identifier. * @param wParam - first message parameter. * @param lParam - second message parameter. */LRESULT CALLBACK CSplitter::SplitterWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ int x, y, nSplitterPos, nSplitterSize; POINT point; HCURSOR hCursor; PAINTSTRUCT ps; HDC hdc; DWORD dwResult; CSplitter* _this = (CSplitter*)GetWindowLongPtr(hwnd, GWL_USERDATA); _ASSERTE(_this != NULL); switch(uMsg) { case WM_NCHITTEST: if (GetCapture() == hwnd) return HTCLIENT; point.x = GET_X_LPARAM(lParam); point.y = GET_Y_LPARAM(lParam); ScreenToClient(hwnd, &point); return (_this->HitTest(point) ? HTCLIENT : HTTRANSPARENT); case WM_SETCURSOR: _ASSERTE(g_pResManager != NULL); dwResult = GetMessagePos(); point.x = GET_X_LPARAM(dwResult); point.y = GET_Y_LPARAM(dwResult); ScreenToClient(hwnd, &point); if (_this->HitTest(point)) hCursor = _this->m_eDirection == SD_VERTICAL ? g_pResManager->m_hUpDownCursor : g_pResManager->m_hLeftRightCursor; else hCursor = g_pResManager->m_hArrowCursor; if (hCursor) { SetCursor(hCursor); return TRUE; } return FALSE; case WM_LBUTTONDOWN: if (GetCapture() != hwnd) { x = GET_X_LPARAM(lParam); y = GET_Y_LPARAM(lParam); if (_this->HitTest(x, y)) SetCapture(hwnd); } return 0; case WM_MOUSEMOVE: if (GetCapture() == hwnd) { nSplitterPos = _this->m_eDirection == SD_VERTICAL ? GET_Y_LPARAM(lParam) : GET_X_LPARAM(lParam); _this->SetSplitterPos(nSplitterPos); } return 0; case WM_LBUTTONUP: if (GetCapture() == hwnd) ReleaseCapture(); return 0; case WM_CAPTURECHANGED: return 0; case WM_ERASEBKGND: return TRUE; case WM_SIZE: nSplitterSize = _this->m_eDirection == SD_VERTICAL ? GET_Y_LPARAM(lParam) : GET_X_LPARAM(lParam); _this->ResizeSplitter(nSplitterSize); return 0; case WM_PAINT: hdc = (HDC)wParam; if (! hdc) { hdc = BeginPaint(hwnd, &ps); if (hdc) { _this->DrawSplitter(hdc); EndPaint(hwnd, &ps); } } else _this->DrawSplitter(hdc); return 0; case WM_PRINTCLIENT: hdc = (HDC)wParam; _this->DrawSplitter(hdc); return 0; case WM_GETDLGCODE: return DLGC_STATIC; default: return DefWindowProc(hwnd, uMsg, wParam, lParam); }}
开发者ID:BeaconDev,项目名称:xray-16,代码行数:94,
示例8: WndProcLRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; RECT rect; COLORREF colorText = RGB(0, 0, 255); // задаём цвет текста switch (message) { case WM_COMMAND: case BN_CLICKED: if (LOWORD(wParam) == ID_BUTTON1) { GetClientRect(hWnd, &rect); edit1 = CreateWindowEx( WS_EX_CLIENTEDGE, L"edit", L"Нажмите правую клавишу мыши", WS_CHILD | WS_VISIBLE | EM_FMTLINES, rect.right / 4, /*координаты по X*/ rect.bottom / 4, /*координаты по Y*/ rect.right / 2, /*Ширина окошка*/ rect.bottom / 2, hWnd, (HMENU)ID_EDIT1, hinst, NULL); } break; case WM_RBUTTONDOWN: ShowWindow(edit1, SW_HIDE); break; case WM_CREATE: GetClientRect(hWnd, &rect); button1 = CreateWindowEx( WS_EX_CLIENTEDGE, L"button", L"Показать", WS_CHILD | WS_VISIBLE, rect.right / 2 - ARRAYSIZE(L"Показать") * 4 - 10, /*координаты по X*/ rect.bottom - 30, /*координаты по Y*/ ARRAYSIZE(L"Показать") * 10, /*Ширина окошка*/ 25, hWnd, (HMENU)ID_BUTTON1, hinst, NULL); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // инициализируем контекст устройства GetClientRect(hWnd, &rect); // получаем ширину и высоту области для рисования SetTextColor(hdc, colorText); // устанавливаем цвет контекстного устройства DrawText(hdc, L"В в е д и т е т е к с т", -1, &rect, DT_SINGLELINE | DT_CENTER); // рисуем текст break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; } return 0;}
开发者ID:andrevyakin,项目名称:DZ_05.04.15_3_WinAPI,代码行数:82,
示例9: WinProcLRESULT CALLBACK WinProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; switch (uMsg) { case WM_SIZE: // If the window is resized if(!g_bFullScreen) // Do this only if we are NOT in full screen { SizeOpenGLScreen(LOWORD(lParam),HIWORD(lParam));// LoWord=Width, HiWord=Height GetClientRect(hWnd, &g_rRect); // Get the window rectangle } break; case WM_PAINT: // If we need to repaint the scene BeginPaint(hWnd, &ps); // Init the paint struct EndPaint(hWnd, &ps); // EndPaint, Clean up break;//////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// // Below we define our controls for this simple tutorial. // The controls are: // Left Mouse Button - Changes the Render mode from normal to wireframe. // Right Mouse Button - Turns lighting On/Off // Left Arrow Key - Spins the model to the left // Right Arrow Key - Spins the model to the right // Escape - Quits case WM_LBUTTONDOWN: // If the left mouse button was clicked if(g_ViewMode == GL_TRIANGLES) { // We our drawing mode is at triangles g_ViewMode = GL_LINE_STRIP; // Go to line strips } else { g_ViewMode = GL_TRIANGLES; // Go to triangles } break; case WM_RBUTTONDOWN: // If the right mouse button was clicked. g_bLighting = !g_bLighting; // Turn lighting ON/OFF if(g_bLighting) { // If lighting is ON glEnable(GL_LIGHTING); // Enable OpenGL lighting } else { glDisable(GL_LIGHTING); // Disable OpenGL lighting } break; case WM_KEYDOWN: // If we pressed a key switch(wParam) { // Check if we hit a key case VK_ESCAPE: // If we hit the escape key PostQuitMessage(0); // Send a QUIT message to the window break; case VK_LEFT: // If the LEFT arrow key was pressed g_RotationSpeed -= 0.05f; // Decrease the rotation speed (eventually rotates left) break; case VK_RIGHT: // If the RIGHT arrow key is pressed g_RotationSpeed += 0.05f; // Increase the rotation speed (rotates right) break; } break;//////////// *** NEW *** ////////// *** NEW *** ///////////// *** NEW *** //////////////////// case WM_CLOSE: // If the window is being closed PostQuitMessage(0); // Send a QUIT Message to the window break; default: // Return by default return DefWindowProc (hWnd, uMsg, wParam, lParam); } return 0; // If we handled the messge return 0}
开发者ID:88er,项目名称:tutorials,代码行数:80,
示例10: MsgBoxDlgProcBOOL CALLBACK MsgBoxDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){MBDATA * pMbd; switch (uMsg) { // center in parent but on screen if hWndPar != NULL case WM_INITDIALOG : { CRect rWin; GetClientRect (hDlg, &rWin); ASSERT ((rWin.left == 0) && (rWin.top == 0)); HWND hWndPar = GetParent (hDlg); if (hWndPar == NULL) rWin += CPoint ((GetSystemMetrics (SM_CXSCREEN) - rWin.Width ()) / 2, (GetSystemMetrics (SM_CYSCREEN) - rWin.Height ()) / 2); else { CRect rPar; GetWindowRect (hWndPar, &rPar); rWin += CPoint (rPar.left + (rPar.Width () - rWin.Width ()) / 2, rPar.top + (rPar.Height () - rWin.Height ()) / 2); if (rWin.left < 0) rWin += CPoint (- rWin.left, 0); else if (rWin.right > GetSystemMetrics (SM_CXSCREEN)) rWin -= CPoint (rWin.right - GetSystemMetrics (SM_CXSCREEN), 0); if (rWin.top < 0) rWin += CPoint (0, - rWin.top); else if (rWin.bottom > GetSystemMetrics (SM_CYSCREEN)) rWin -= CPoint (0, rWin.bottom - GetSystemMetrics (SM_CYSCREEN)); } SetWindowPos (hDlg, NULL, rWin.left, rWin.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER); } // NO BREAK - falls through case WM_ACTIVATE : case WM_ACTIVATEAPP : hDlgBox = hDlg; return (TRUE); case WM_DESTROY : hDlgBox = NULL; break; case WM_PAINT : pMbd = (MBDATA *) GetWindowLong (hDlg, DWL_USER); if ((pMbd == NULL) || (pMbd->hIcon == NULL)) break; PAINTSTRUCT ps; BeginPaint (hDlg, &ps); DrawIcon (ps.hdc, pMbd->iXicon, pMbd->iYicon, pMbd->hIcon); EndPaint (hDlg, &ps); return (TRUE); case WM_COMMAND : if ((LOWORD (lParam) == 0) || (HIWORD (lParam) != BN_CLICKED)) break; if ((pMbd = (MBDATA *) GetWindowLong (hDlg, DWL_USER)) == NULL) break; // check for help if (wParam == pMbd->wHelpBtn) { const char *pHelpFile; char sName[130]; CWinApp *pApp = AfxGetApp (); if (pApp != NULL) pHelpFile = pApp->m_pszHelpFilePath; else { GetModuleFileName (AfxGetInstanceHandle (), sName, 128); int iLen = strlen (sName); if (iLen < 3) break; sName[iLen-3] = 0; strcat (sName, "HLP"); pHelpFile = sName; } if (pMbd->lHelp == 0) WinHelp (hDlg, pHelpFile, HELP_CONTENTS, 0); else WinHelp (hDlg, pHelpFile, HELP_CONTEXT, pMbd->lHelp); return (TRUE); } *(pMbd->piRtn) = wParam; return (TRUE); } return (FALSE);}
开发者ID:Marenz,项目名称:EnemyNations,代码行数:93,
示例11: WndProc//// FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)//// PURPOSE: Processes messages for the main window.//// WM_COMMAND - process the application menu// WM_PAINT - Paint the main window// WM_DESTROY - post a quit message and return////LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int wmId, wmEvent; int mX, mY; PAINTSTRUCT ps; HDC hdc; ::GetClientRect(hWnd, &winRect); WorldRenderer worldHandle(hWnd, hdc, winRect, player); /* */ switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); worldHandle.update(playerAct); EndPaint(hWnd, &ps); break; case WM_MOUSEMOVE: // C++ BeginReading函数代码示例 C++ BeginDeferWindowPos函数代码示例
|