WIN32 API初学者,我这段代码,怎么让小球运动不了?
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; static int x,y
贴吧:c++作者:真相重要_吗 2014-03-23 21:32
易语言API函数大全3
9. API之设备场景函数 CombineRgn 将两个区域组合为个新区域 CombineTransform 驱动世界转换。它相当于依顺序进两次转换 CreateCompatibleDC 创建个与特定设备场景致的内存设备场景 CreateDC 为专门设备创建设备场景 CreateEllipticRgn 创建个椭圆 CreateEllipticRgnIndirect 创建个内切于特定矩形的椭圆区域 CreateIC 为专设备创建个信息场景 CreatePolygonRgn 创建个由系列点围成的区域 CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的 CreateRectRgn 创建个矩形区
贴吧:gmkey作者:游戏百晓生 2024-01-28 19:12
回复:BenginPaint 求解释...
这是MSDN的描述……
The BeginPaint function automatically sets the clipping region of the device context to exclude any area outside the update region. The update region is set by the InvalidateRect or InvalidateRgn function and by the system after sizing, moving, creating, scrolling, or any other operation that affects the client area. If the update region is marked for erasing, BeginPaint sends a WM_ERASEBKGND message to the window.
An application should not call BeginPaint except in response to a WM_PAINT message. Each call to BeginPaint must have a corresponding call to the EndPaint function.
If the caret is in the area to be painted, BeginPaint automatically hides the caret to prevent it from being erased.
If the window's class has a background brush, BeginPaint uses that brush to erase the background of the update region before returning.
贴吧:c++作者:Hope_20121221_ 2011-07-21 18:59
回复:[分享]比较详细的API作用说明
9. API之设备场景函数
CombineRgn 将两个区域组合为一个新区域
CombineTransform 驱动世界转换。它相当于依顺序进行两次转换
CreateCompatibleDC 创建一个与特定设备场景一致的内存设备场景
CreateDC 为专门设备创建设备场景
CreateEllipticRgn 创建一个椭圆
CreateEllipticRgnIndirect 创建一个内切于特定矩形的椭圆区域
CreateIC 为专用设备创建一个信息场景
CreatePolygonRgn 创建一个由一系列点围成的区域
CreatePolyPolygonRgn 创建由多个多边形构成的区域。每个多边形都应是封闭的
CreateRectRgn 创建一个矩形区域
CreateRectRgnIndirect 创建一个矩形区域
CreateRoundRectRgn 创建一个圆角矩形
DeleteDC 删除专用设备场景或信息场景,释放所有相关窗口资源
DPtoLP 将点阵从设备坐标转换到专用设备场景逻辑坐标
EqualRgn 确定两个区域是否相等
ExcludeClipRect 从专用设备场景的剪裁区中去掉一个矩形区。矩形内不能进行绘图
ExcludeUpdateRgn 从专用设备场景剪裁区去掉指定窗口的刷新区域
ExtCreateRegion 根据世界转换修改区域
ExtSelectClipRgn 将指定区域组合到设备场景的当前剪裁区
FillRgn 用指定刷子填充指定区域
FrameRgn 用指定刷子围绕指定区域画一个外框
GetBoundsRect 获取指定设备场景的边界矩形
GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
GetClipRgn 获取设备场景当前剪裁区
GetDC 获取指定窗口的设备场景
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息
GetGraphicsMode 确定是否允许增强图形模式(世界转换)
GetMapMode 为特定设备场景调入映象模式
GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区
GetRgnBox 获取完全包含指定区域的最小矩形
GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新
GetViewportExtEx 获取设备场景视口(viewport)范围
GetViewportOrgEx 获取设备场景视口起点
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景
GetWindowExtEx 获取指定设备场景的窗口范围
GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点
GetWindowRgn 获取窗口区域
GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换
IntersectClipRect 为指定设备定义一个新的剪裁区
InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
ModifyWorldTransform 根据指定的模式修改世界转换
OffsetClipRgn 按指定量平移设备场景剪裁区
OffsetRgn 按指定偏移量平移指定区域
OffsetViewportOrgEx 平移设备场景视口区域
OffsetWindowOrgEx 平移指定设备场景窗口起点
PaintRgn 用当前刷子背景色填充指定区域
PtInRegion 确定点是否在指定区域内
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)
RectInRegion 确定矩形是否有部分在指定区域内
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈
ScaleViewportExtEx 缩放设备场景视口的范围
ScaleWindowExtEx 缩放指定设备场景窗口范围
ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形
SelectClipRgn 为指定设备场景选择新的剪裁区
SetBoundsRect 设置指定设备场景的边界矩形
SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)
SetMapMode 设置指定设备场景的映射模式
SetRectRgn 设置区域为指定的矩形
SetViewportExtEx 设置设备场景视口范围
SetViewportOrgEx 设置设备场景视口起点
SetWindowExtEx 设置指定设备场景窗口范围
SetWindowOrgEx 设置指定设备场景窗口起点
SetWindowRgn 设置窗口区域
SetWorldTransform 设置世界转换
ValidateRgn 激活窗口中指定区域,把它从刷新区移走
WindowFromDC 取回与某一设备场景相关的窗口的句柄
这些不知道是不是跟自绘有关= =
贴吧:易语言作者:SitDownload 2013-08-19 14:22
来测试一下你的电脑磁盘得分把(磁盘打分正式版)
GlobalFlags, InterlockedDecrement, GlobalFindAtomW, CompareStringW, LoadLibraryA, GetVersionExA, GlobalAddAtomW, WritePrivateProfileStringW, FreeResource, GlobalDeleteAtom, GetCurrentThread, GetCurrentThreadId, ConvertDefaultLocale, EnumResourceLanguagesW, lstrcmpA, GetLocaleInfoW, CompareStringA, InterlockedExchange, lstrcmpW, GetModuleHandleW, LocalFree, lstrlenW, GetCurrentProcessId, GetModuleFileNameW, MulDiv, GetModuleHandleA, GetProcAddress, SetLastError, WideCharToMultiByte, MultiByteToWideChar, GetVersionExW, GetCurrentProcess, GlobalFree, GlobalReAlloc, GlobalUnlock, GlobalLock, GlobalAlloc, WriteFile, FormatMessageW, GetLastError, FreeLibrary, LoadLibraryW, GetSystemWindowsDirectoryW, GetDiskFreeSpaceExW, ReadFile, QueryPerformanceCounter, SetFilePointer, CloseHandle, CreateFileW, ResumeThread, SetThreadPriority, GetLogicalDriveStringsW, QueryPerformanceFrequency, FindResourceW, LoadResource, LockResource, GetSystemTimeAsFileTime, SizeofResource<BR>&gt; USER32.dll: PostThreadMessageW, GetWindowTextW, GetForegroundWindow, GetTopWindow, UnhookWindowsHookEx, GetMessageTime, SetMenu, SetForegroundWindow, UpdateWindow, CreateWindowExW, GetClassInfoExW, GetClassInfoW, RegisterClassW, AdjustWindowRectEx, EqualRect, CopyRect, GetDlgCtrlID, DefWindowProcW, CallWindowProcW, GetMenu, SetWindowLongW, OffsetRect, IntersectRect, SystemParametersInfoA, GetWindowPlacement, GetWindowRect, SetWindowsHookExW, CallNextHookEx, GetMessageW, TranslateMessage, DispatchMessageW, IsWindowVisible, GetKeyState, PeekMessageW, GetCursorPos, ValidateRect, SetMenuItemBitmaps, GetMenuCheckMarkDimensions, LoadBitmapW, GetFocus, ModifyMenuW, EnableMenuItem, RegisterClipboardFormatW, GetActiveWindow, SetActiveWindow, CreateDialogIndirectParamW, DestroyWindow, IsWindow, GetDlgItem, GetNextDlgTabItem, EndDialog, GetWindow, SetWindowContextHelpId, MapDialogRect, SetWindowPos, PostQuitMessage, PostMessageW, GetMenuState, GetMenuItemID, GetMenuItemCount, GetSubMenu, GetWindowThreadProcessId, GetParent, GetWindowLongW, GetLastActivePopup, IsWindowEnabled, MessageBoxW, GetSysColor, EndPaint, BeginPaint, GetWindowDC, ReleaseDC, GetDC, ClientToScreen, GrayStringW, DrawTextExW, DrawTextW, EnableWindow, GetNextDlgGroupItem, InvalidateRgn, IsRectEmpty, TabbedTextOutW, SetRect, SetCursor, CopyIcon, PtInRect, ScreenToClient, GetMessagePos, MessageBeep, KillTimer, SetTimer, InvalidateRect, DrawIcon, GetClientRect, GetSystemMetrics, IsIconic, LoadCursorW, SendMessageW, AppendMenuW, GetSystemMenu, LoadIconW, UnregisterClassW, CharUpperW, GetDesktopWindow, CopyAcceleratorTableW, CharNextW, ReleaseCapture, SetCapture, GetSysColorBrush, DestroyMenu, ShowWindow, MoveWindow, SetWindowTextW, IsDialogMessageW, SetDlgItemTextW, RegisterWindowMessageW, SendDlgItemMessageW, SendDlgItemMessageA, WinHelpW, IsChild, GetCapture, GetClassLongW, GetClassNameW, SetPropW, GetPropW, RemovePropW, SetFocus, CheckMenuItem, GetWindowTextLengthW, MapWindowPoints<BR>&gt; GDI32.dll: LineTo, MoveToEx, GetViewportExtEx, GetWindowExtEx, PtVisible, RectVisible, TextOutW, ExtTextOutW, Escape, SetViewportOrgEx, OffsetViewportOrgEx, SetViewportExtEx, ScaleViewportExtEx, SetWindowExtEx, ScaleWindowExtEx, ExtSelectClipRgn, CreateBitmap, GetDeviceCaps, CreatePen, CreateSolidBrush, CreateRectRgnIndirect, GetMapMode, GetBkColor, GetTextColor, GetRgnBox, SetMapMode, GetClipBox, SetTextColor, SetBkMode, SetBkColor, RestoreDC, SaveDC, DeleteDC, DeleteObject, GetStockObject, CreateFontIndirectW, CreateCompatibleDC, GetObjectW, BitBlt, SelectObject, Rectangle, CreateFontW, CreateCompatibleBitmap<BR>&gt; COMDLG32.dll: GetFileTitleW<BR>&gt; WINSPOOL.DRV: DocumentPropertiesW, ClosePrinter, OpenPrinterW<BR>&gt; ADVAPI32.dll: RegQueryValueExW, RegQueryValueW, RegOpenKeyW, RegEnumKeyW, RegDeleteKeyW, RegSetValueExW, RegCreateKeyExW, RegOpenKeyExW, RegCloseKey<BR>&gt; SHELL32.dll: ShellExecuteW<BR>&gt; COMCTL32.dll: InitCommonControlsEx<BR>&gt; SHLWAPI.dll: PathFindFileNameW, PathStripToRootW, PathIsUNCW, PathFindExtensionW<BR>&gt; oledlg.dll: OleUIBusyW<BR>&gt; ole32.dll: CoRevokeClassObject, OleInitialize, CoFreeUnusedLibraries, OleUninitialize, CreateILockBytesOnHGlobal, StgCreateDocfileOnILockBytes, StgOpenStorageOnILockBytes, CoGetClassObject, OleIsCurrentClipboard, CLSIDFromString, CLSIDFromProgID, CoTaskMemAlloc, CoTaskMemFree, OleFlushClipboard, CoRegisterMessageFilter<BR>&gt; OLEAUT32.dll: -, -, -, -, -, -, -, -, -, -, -, -<BR><BR>( 0 exports ) <BR>

贴吧:硬件作者:hikecn 2010-05-19 18:44
常用API函数
GetClipBox 获取完全包含指定设备场景剪裁区的最小矩形
GetClipRgn 获取设备场景当前剪裁区
GetDC 获取指定窗口的设备场景
GetDCEx 为指定窗口获取设备场景。相比GetDC,本函数提供了更多的选项
GetDCOrgEx 获取指定设备场景起点位置(以屏幕坐标表示)
GetDeviceCaps 根据指定设备场景代表的设备的功能返回信息
GetGraphicsMode 确定是否允许增强图形模式(世界转换)
GetMapMode 为特定设备场景调入映象模式
GetRegionData 装入描述一个区域信息的RgnData结构或缓冲区
GetRgnBox 获取完全包含指定区域的最小矩形
GetUpdateRgn 确定指定窗口的刷新区域。该区域当前无效,需要刷新
GetViewportExtEx 获取设备场景视口(viewport)范围
GetViewportOrgEx 获取设备场景视口起点
GetWindowDC 获取整个窗口(包括边框、滚动条、标题栏、菜单等)的设备场景
GetWindowExtEx 获取指定设备场景的窗口范围
GetWindowOrgEx 获取指定设备场景的逻辑窗口的起点
GetWindowRgn 获取窗口区域
GetWorldTransform 如果有世界转换,为设备场景获取当前世界转换
IntersectClipRect 为指定设备定义一个新的剪裁区
InvalidateRgn 使窗口指定区域不活动,并将它加入窗口刷新区,使之可随后被重画
InvertRgn 通过颠倒每个像素值反转设备场景指定区域
LPtoDP 将点阵从指定设备场景逻辑坐标转换为设备坐标
ModifyWorldTransform 根据指定的模式修改世界转换
OffsetClipRgn 按指定量平移设备场景剪裁区
OffsetRgn 按指定偏移量平移指定区域
OffsetViewportOrgEx 平移设备场景视口区域
OffsetWindowOrgEx 平移指定设备场景窗口起点
PaintRgn 用当前刷子背景色填充指定区域
PtInRegion 确定点是否在指定区域内
PtVisible 确定指定点是否可见(即,点是否在设备场景剪裁区内)
RectInRegion 确定矩形是否有部分在指定区域内
RectVisible 确定指定矩形是否有部分可见(是否在设备场景剪裁区内)
ReleaseDC 释放由调用GetDC或GetWindowDC函数获取的指定设备场景
RestoreDC 从设备场景堆栈恢复一个原先保存的设备场景
SaveDC 将指定设备场景状态保存到Windows设备场景堆栈
ScaleViewportExtEx 缩放设备场景视口的范围
ScaleWindowExtEx 缩放指定设备场景窗口范围
ScrollDC 在窗口(由设备场景代表)中水平和(或)垂直滚动矩形
SelectClipRgn 为指定设备场景选择新的剪裁区
SetBoundsRect 设置指定设备场景的边界矩形
SetGraphicsMode 允许或禁止增强图形模式,以提供某些支持(包括世界转换)
SetMapMode 设置指定设备场景的映射模式
SetRectRgn 设置区域为指定的矩形
SetViewportExtEx 设置设备场景视口范围
SetViewportOrgEx 设置设备场景视口起点
SetWindowExtEx 设置指定设备场景窗口范围
SetWindowOrgEx 设置指定设备场景窗口起点
SetWindowRgn 设置窗口区域
SetWorldTransform 设置世界转换
ValidateRgn 激活窗口中指定区域,把它从刷新区移走
WindowFromDC 取回与某一设备场景相关的窗口的句柄
常用 API 函数(10): 硬件与系统函数
ActivateKeyboardLayout 激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义
Beep 用于生成简单的声音
CharToOem 将一个字串从ANSI字符集转换到OEM字符集
ClipCursor 将指针限制到指定区域
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID
CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗口的默认插入符
DestroyCaret 清除(破坏)一个插入符
EnumCalendarInfo 枚举在指定"地方"环境中可用的日历信息

贴吧:warrially作者:warrially 2010-02-24 06:23
回复:MFC PICTURE控件 闪屏问题求解决
代码:
VOID CLXTomDlg::OnDraw()
{
int i;
srand((long)time(NULL));
// CRgn rgn1, rgn2,rgn3;
CPaintDC dc(this); // device context for painting
//两种颜色的画笔
CPen pen_red(PS_SOLID,1,RGB(255,0,0));
CPen pen_black(PS_SOLID,1,RGB(0,0,0));
//获取绘制坐标的控件
CWnd* pWnd = GetDlgItem(IDC_STATIC_INFRAREDMAP);
CDC* pDC = pWnd->GetDC();
CWnd* pWnd_radar = GetDlgItem(IDC_STATIC_RADARMAP);
CDC* pDC_radar = pWnd_radar->GetDC();
CWnd* pWnd_mixture = GetDlgItem(IDC_STATIC_MIXTURE);
CDC* pDC_mixture = pWnd_mixture->GetDC();
CRect picRect_infrared;
GetDlgItem(IDC_STATIC_INFRAREDMAP)->GetWindowRect(&picRect_infrared);
CRect picRect_radar;
GetDlgItem(IDC_STATIC_RADARMAP)->GetWindowRect(&picRect_radar);
CRect picRect_mixture;
GetDlgItem(IDC_STATIC_MIXTURE)->GetWindowRect(&picRect_mixture);
////////////红外/////////////////////////////////////
tagPOINT pt[8]={{95,84},{125,101},{157,124},{173,155},{84,125},{101,125},{104,147},{135,123}};
for(i=0;i<8;i++)
{
pt[i].x=pt[i].x+rand()%50+10;
pt[i].x=pt[i].y+rand()%50+10;
}
CDC dcMem;
CBitmap bm;
GetClientRect(&picRect_infrared);
// rgn1.CreateRectRgnIndirect(picRect_infrared);
// InvalidateRect(&picRect_infrared);
// Step 1:为屏幕DC创建兼容的内存DC :CreateCompatibleDC()
dcMem.CreateCompatibleDC(pDC);
// Step 2:创建位图:CreateCompatibleBitmap()
bm.CreateCompatibleBitmap(pDC,picRect_infrared.Width(),picRect_infrared.Height());
dcMem.SelectObject(&bm);
// Step 3:把位图选入设备环境:SelectObject(),可以理解为选择画布
dcMem.FillSolidRect(picRect_infrared,pDC->GetBkColor());
//更改画笔颜色
dcMem.SelectObject(pen_red);
// 画图
for( i=0;i<8;i++)
{
dcMem.Ellipse(pt[i].x-10,pt[i].y-10,pt[i].x+10,pt[i].y+10);
}
//pDC->BitBlt(picRect_infrared.left,picRect_infrared.top,picRect_infrared.Width(),picRect_infrared.Height(),&dcMem,0,0,SRCCOPY);
//
tagPOINT pt1[8]={{95,84},{125,101},{157,124},{173,155},{84,125},{101,125},{104,147},{135,123}};
for(i=0;i<8;i++)
{
pt1[i].x=pt1[i].x+rand()%50+10;
pt1[i].x=pt1[i].y+rand()%50+10;
}
////////////雷达/////////////////////////////////////
CDC dcMem_radar;
CBitmap bm_radar;
GetClientRect(&picRect_radar);
// rgn2.CreateRectRgnIndirect(picRect_radar);
//InvalidateRect(&picRect_radar);
// Step 1:为屏幕DC创建兼容的内存DC :CreateCompatibleDC()
dcMem_radar.CreateCompatibleDC(pDC_radar);
// Step 2:创建位图:CreateCompatibleBitmap()
bm_radar.CreateCompatibleBitmap(pDC_radar,picRect_radar.Width(),picRect_radar.Height());
dcMem_radar.SelectObject(&bm_radar);
// Step 3:把位图选入设备环境:SelectObject(),可以理解为选择画布
dcMem_radar.FillSolidRect(picRect_radar,pDC_radar->GetBkColor());
//更改画笔颜色
dcMem_radar.SelectObject(pen_black);
// 画图
for( i=0;i<8;i++)
{
dcMem_radar.Ellipse(pt1[i].x-10,pt1[i].y-10,pt1[i].x+10,pt1[i].y+10);
}
////////////红外—雷达/////////////////////////////////////
CDC dcMem_mixture;
CBitmap bm_mixture;
GetClientRect(&picRect_mixture);
// rgn3.CreateRectRgnIndirect(picRect_mixture);
// InvalidateRect(&picRect_mixture);
// Step 1:为屏幕DC创建兼容的内存DC :CreateCompatibleDC()
dcMem_mixture.CreateCompatibleDC(pDC_mixture);
// Step 2:创建位图:CreateCompatibleBitmap()
bm_mixture.CreateCompatibleBitmap(pDC_mixture,picRect_mixture.Width(),picRect_mixture.Height());
dcMem_mixture.SelectObject(&bm_mixture);
// Step 3:把位图选入设备环境:SelectObject(),可以理解为选择画布
dcMem_mixture.FillSolidRect(picRect_mixture,pDC_mixture->GetBkColor());
//更改画笔颜色
dcMem_mixture.SelectObject(pen_black);
// 红笔画图
for( i=0;i<8;i++)
{
dcMem_mixture.Ellipse(pt1[i].x-10,pt1[i].y-10,pt1[i].x+10,pt1[i].y+10);
}
dcMem_mixture.SelectObject(pen_red);
// 黑笔画图
for( i=0;i<8;i++)
{
dcMem_mixture.Ellipse(pt[i].x-10,pt[i].y-10,pt[i].x+10,pt[i].y+10);
}
// Step 4:把绘制好的图形“拷贝”到屏幕上:BitBlt()
pDC->BitBlt(picRect_infrared.left,picRect_infrared.top,picRect_infrared.Width(),picRect_infrared.Height(),&dcMem,0,0,SRCCOPY);
pDC_radar->BitBlt(picRect_radar.left,picRect_radar.top,picRect_radar.Width(),picRect_radar.Height(),&dcMem_radar,0,0,SRCCOPY);
pDC_mixture->BitBlt(picRect_mixture.left,picRect_mixture.top,picRect_mixture.Width(),picRect_mixture.Height(),&dcMem_mixture,0,0,SRCCOPY);
dcMem.DeleteDC();
bm.DeleteObject();
dcMem_radar.DeleteDC();
bm_radar.DeleteObject();
dcMem_mixture.DeleteDC();
bm_mixture.DeleteObject();
//CRect rectClient;
// CRgn rgn1, rgn2,rgn3;
// GetClientRect();
// rgn1.CreateRectRgnIndirect();
// rgn2.CreateRectRgnIndirect();
// rgn1.CombineRgn(&rgn1, &rgn2, RGN_XOR);
// rgn1.CombineRgn(&rgn1, &rgn3, RGN_XOR);
// InvalidateRgn(&rgn1, TRUE);
//UpdateWindow();
}
void CLXTomDlg::OnPaint()
{
// SetRedraw(FALSE);
OnDraw();
//SetRedraw(TRUE);
CDialog::OnPaint();
}
BOOL CLXTomDlg::OnEraseBkgnd(CDC* pDC)
{
// return CDialog::OnEraseBkgnd(pDC);
return true;
}
贴吧:mfc作者:king2009637 2014-02-25 15:43

大家都在搜

  • postInvalidate
  • Invalidate
  • 子窗口Invalidate