windows贴图代码
2013-11-05 21:59
375 查看
#include"windows.h" #include "resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szAppName [] = TEXT ("Bricks1") ; HWND hwnd ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("This program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } hwnd = CreateWindow (szAppName, TEXT ("LoadBitmap Demo"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (hwnd, iCmdShow) ; UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)) { TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { static HBITMAP hBitmap ; static int cxClient, cyClient, cxSource, cySource ; BITMAP bitmap ; HDC hdc, hdcMem ; HINSTANCE hInstance ; int x, y ; PAINTSTRUCT ps ; LPCREATESTRUCT lpstruct; switch (message) { case WM_CREATE: lpstruct=(LPCREATESTRUCT) lParam; hInstance = ((LPCREATESTRUCT) lParam)->hInstance ; //hBitmap = LoadBitmap (NULL,TEXT(".\\Bricks.bmp")) ; hBitmap = LoadBitmap (hInstance, MAKEINTRESOURCE (IDB_BITMAP2)/*TEXT("Bricks")*/) ; //hBitmap=LoadImage(NULL,) //hBitmap=LoadImage(NULL,TEXT(".\\Bricks.bmp"),IMAGE_BITMAP,NULL,NULL,LR_DEFAULTCOLOR); //hBitmap=LoadImage(hInstance,MAKEINTRESOURCE(IDB_BITMAP2),IMAGE_BITMAP,NULL,NULL,LR_DEFAULTCOLOR); GetObject (hBitmap, sizeof (BITMAP), &bitmap) ; cxSource = bitmap.bmWidth ; cySource = bitmap.bmHeight ; return 0 ; case WM_SIZE: cxClient = LOWORD (lParam) ; cyClient = HIWORD (lParam) ; return 0 ; case WM_PAINT: hdc = BeginPaint (hwnd, &ps) ; //hdcMem = CreateCompatibleDC (hdc) ; //SelectObject (hdcMem, hBitmap) ; //x=0,y=0; //for (y = 100 ; y < cyClient-50 ; y += cySource) //{ // for (x = 100 ; x < cxClient-50; x += cxSource) // { // BitBlt (hdc, x, y, cxSource, cySource, hdcMem, 0, 0, SRCCOPY) ; // // Sleep(10); // } //} //DeleteDC (hdcMem) ; EndPaint (hwnd, &ps) ; return 0 ; case WM_LBUTTONDOWN: InvalidateRect(hwnd, NULL, FALSE/*TRUE*/); x=LOWORD(lParam); y=HIWORD(lParam); hdc =GetDC(hwnd); hdcMem = CreateCompatibleDC (hdc) ; SelectObject (hdcMem, hBitmap) ; BitBlt (hdc, x, y, cxSource, cySource/2, hdcMem, 0, 0, SRCCOPY) ; DeleteDC (hdcMem) ; ReleaseDC(hwnd,hdc); return 0 ; case WM_RBUTTONDOWN: InvalidateRect(hwnd, NULL, FALSE/*TRUE*/);//缺了效果不好 x=LOWORD(lParam); y=HIWORD(lParam); hdc = BeginPaint (hwnd, &ps) ; hdcMem = CreateCompatibleDC (hdc) ; SelectObject (hdcMem, hBitmap) ; BitBlt (hdc, x, y, cxSource, cySource/2, hdcMem, 0, 0, SRCCOPY) ; DeleteDC (hdcMem) ; EndPaint (hwnd, &ps) ; return 0; case WM_DESTROY: DeleteObject (hBitmap) ; PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; }
相关文章推荐
- <pythonchallenge.com>----Lv3
- Java 正则表达式(二)
- FileInputStream/FileOutputStream的应用
- c++容易被忽视的细节序列 (一)
- Java上传、下载代码
- NetBeans更改默认JDK路径
- VC++连接SQL Server2005 数据库
- SpringMVC和Struts的区别
- C++设计模式之六--Facade门面模式
- 编程常识
- C++基础(1)
- MVC3 GLOBAL文件路由配置BUG
- SpringMVC和Struts是线程安全的吗?为什么?
- 使用zend studio配置Xdebug调试PHP教程
- getchar putchar是宏还是函数?
- Qt程序对文本文件的读写
- Struts2注解Convention扫描jar中的Action的设置,注解Action咋jar中找不到.
- 黄聪:C#多线程教程(1):BeginInvoke和EndInvoke方法,解决主线程延时Thread.sleep柱塞问题(转)
- Yii框架tips--经常实用的东西
- Java基础1--概述--环境变量--HelloWorld