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) ;
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决ViewPager,ScrollView嵌套ViewPager滑动冲突解决这篇博客主要讲解一下几个问题-粗略地介绍一下View的事件分发机制-解决事件滑动冲突的思路及方法-ScrollView里面嵌套ViewPager导致的滑动冲突-ViewPager里面嵌套ViewPager导致的滑动冲突-轮播图的几种实现方式先看一下效果图ScrollView里面嵌套View

  • pycharm的git_pycharm版本控制

    pycharm的git_pycharm版本控制1、createpatchcreatepatch打补丁,当连接不上git服务器时,可以先本地打补丁,生成一个文件,里面记录了文件变更信息,后面可以随时提交至git服务器2、checkoutrevisioncheckoutrevision检出版本,可以回退到任意版本,右边会显示当前检出版本与上一版本的变化3、newbranchnewbranch建立新的分…

  • 华为云远程登录_华为云电脑如何远程连接电脑

    华为云远程登录_华为云电脑如何远程连接电脑引言最近在自己的华为云服务器上想装一个MySQL作为远程的数据库使用,数据库安装之后在本地访问远程数据库遇到了问题,一直报错10038,于是开始了漫长的翻帖爬楼的历程。在这里将这爬楼的历程记录下来。总的来说,(10038)错误有以下几种解决方式:1.mysql数据库user表的host由localhost改为%2.更改root用户的授权(与1相似)…

  • 单片机-控制-直流电机-基于L9110S-、L298N、TB6612FNG驱动[通俗易懂]

    直流电机(directcurrentmachine)能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。直流电动机将直流电能转换为机械能的转动装置。电动…

  • navicat15 激活码【最新永久激活】

    (navicat15 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html09…

  • java socket发送中文乱码_java Socket接收数据乱码问题「建议收藏」

    java socket发送中文乱码_java Socket接收数据乱码问题「建议收藏」));}问题:1.此出输出的数据与我发送的数据不一致2.如果我用strSql=String.valueOf(buffer,0,nDataLen-1);则输出的是方块3.同样我用另外一个程序测试端口6789的数据,打印出来的也是方块,不知道是什么原因,请各位老大帮帮忙分析一下原因,三叩首了!!![/B]测试程序:importjava.nio.channels.ServerSocketCh…

发表回复

您的电子邮箱地址不会被公开。

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