BitBlt_bitcmp

BitBlt_bitcmp/*—————————————–HELLOBIT.C–BitmapDemonstration(c)CharlesPetzold,1998—————————————–*/#include#include”resourc

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

/*-----------------------------------------
   HELLOBIT.C -- Bitmap Demonstration
                 (c) Charles Petzold, 1998
  -----------------------------------------*/
 
#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 ("HelloBit") ;
     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  = szAppName ;
     wndclass.lpszClassName = szAppName ;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName, TEXT ("HelloBit"), 
                          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 HDC     hdcMem ;
     static int     cxBitmap, cyBitmap, cxClient, cyClient, iSize = IDM_BIG ;
     static TCHAR * szText = TEXT (" Hello, world! ") ;
     HDC            hdc ;
     HMENU          hMenu ;
     int            x, y ;
     PAINTSTRUCT    ps ;
     SIZE           size ;
     
     switch (message)
     {
     case WM_CREATE:
			 // 窗口DC
          hdc = GetDC (hwnd) ;
			 // 兼容窗口的内存DC
          hdcMem  = CreateCompatibleDC (hdc) ;
			//得到字符串的长度和高度
          GetTextExtentPoint32 (hdc, szText, lstrlen (szText), &size) ;
          cxBitmap = size.cx ;
          cyBitmap = size.cy ;
			//创建一个兼容位图
          hBitmap = CreateCompatibleBitmap (hdc, cxBitmap, cyBitmap) ;
			//释放创建的窗口DC
          ReleaseDC (hwnd, hdc) ;
			// 把兼容位图选入到内存DC去

          SelectObject (hdcMem, hBitmap) ;
          TextOut (hdcMem, 0, 0, szText, lstrlen (szText)) ;
          return 0 ;

     case WM_SIZE:
          cxClient = LOWORD (lParam) ;
          cyClient = HIWORD (lParam) ;
          return 0 ;

     case WM_COMMAND:
          hMenu = GetMenu (hwnd) ;

          switch (LOWORD (wParam))
          {
          case IDM_BIG:
          case IDM_SMALL:
               CheckMenuItem (hMenu, iSize, MF_UNCHECKED) ;
               iSize = LOWORD (wParam) ;
               CheckMenuItem (hMenu, iSize, MF_CHECKED) ;
               InvalidateRect (hwnd, NULL, TRUE) ;
               break ;
          }
          return 0 ;

     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;

          switch (iSize)
          {
          case IDM_BIG:
			  // 拉伸位图,显示客户区
               StretchBlt (hdc, 0, 0, cxClient, cyClient, 
                           hdcMem, 0, 0, cxBitmap, cyBitmap, SRCCOPY) ;
               break ;

          case IDM_SMALL:
               for (y = 0 ; y < cyClient ; y += cyBitmap)
               for (x = 0 ; x < cxClient ; x += cxBitmap)
               {
				   // 只能显示实际大小
                    BitBlt (hdc, x, y, cxBitmap, cyBitmap, 
                            hdcMem, 0, 0, SRCCOPY) ;
               }
               break ;
          }

          EndPaint (hwnd, &ps) ;
          return 0 ;

     case WM_DESTROY:
          DeleteDC (hdcMem) ;
          DeleteObject (hBitmap) ;
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180542.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月18日 下午8:36
下一篇 2022年10月18日 下午8:36


相关推荐

  • 概率论基础 – 5 – 马尔可夫不等式

    概率论基础 – 5 – 马尔可夫不等式马尔可夫不等式把概率关联到数学期望 给出了随机变量的累积分布函数一个宽泛但仍有用的界 定义马尔可夫不等式用于估计尾事件的概率上界 若随机变量 XXX 只取非负值 则 a gt 0 foralla gt 0 a gt 0 有 P X a E X a mathbb P X geqa leq frac mathbb E X a P X a aE X 证明思路 1 放大概率 得到部分函数期望截断函数期望 二者相比较考虑 X aX geaX a 的情况

    2026年3月17日
    1
  • Bootstrap DatetimePicker官方API

    Bootstrap DatetimePicker官方API截图十年视图年视图月视图日视图 小时视图 nbsp Dayvieww meridian nbsp Hourvieww meridian nbsp nbsp Addedviewsto 依赖需要 boots

    2026年3月16日
    1
  • svn客户端的安装与使用教程(svn汉化教程)

    SVN服务端与客户端安装使用(客户端汉化包)客户端下载地址:https://tortoisesvn.net/downloads.zh.html下载64位SVN安装包和64位简体中文安装包安装SVN打开安装包,直接NextNext选择安装目录,如果是自定义目录要新建一个文件夹,否则会把安装文件散落在盘符(此处不安装命令行工具会导致在idea中无法使用subversio…

    2022年4月17日
    58
  • Spring Boot定制首页和404页面

    Spring Boot定制首页和404页面一、定制首页:方式一:SpringBoot自动映射在静态资源目录resources、static、public的其中一个目录中创建index.html文件,springBoot会自动识别,将这个文件作为首页访问 方式二:使用thymeleaf模板引擎1.导入依赖<!–Thymeleaf模板引擎依赖–><dependency><groupId>org.thymeleaf</groupId><artifact

    2022年7月27日
    15
  • 购物程序「建议收藏」

    购物程序「建议收藏」#-*-coding:utf-8-*-"""CreatedonTueSep1116:35:292018@author:车路历程"&

    2022年8月3日
    8
  • 推荐8个特好用的小众APP,让人耳目一新

    推荐8个特好用的小众APP,让人耳目一新分享 8 个小众但是非常实用的手机 APP 1 白描白描 像猫一样灵动的 OCR 扫描识别神器 具备高准确度的文字识别 表格识别转 Excel 批量识别 识别后翻译 文件扫描等功能 白描的主要特点 文字识别识别准确度高 云端文字识别 识别结果翻译 批量处理高效快捷 自动识别文档边界自动生成扫描件 生成扫描件清晰 支持简体中文 日语 英语 韩语 法语 西班牙语 阿拉伯语 俄语 德语 葡萄牙语 意大利语 繁体中文 粤语 文言文的互译 2 智办事智办事是以 目标 事 为中心的企业数字化管理工具

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号