• 8)贴两张图,实现当前窗口的背景不变,然后仅仅文字部分


    1)贴图 贴两张:

        

    2)注意  每一次创建一个HBITMAP  都要删除

        代码展示:
      

     1     case WM_PAINT:
     2         HDC hdc=::GetDC(hWnd);//获得当前这个HDC的句柄
     3         HDC hdn_jianrong=::CreateCompatibleDC(hdc);//创建一个兼容性HDC
     4 
     5 
     6 
     7         HBITMAP hBitMap=::LoadBitmap(hIns,MAKEINTRESOURCE(BACKGROUND));
     8         HBITMAP hBitMap2=::LoadBitmap(hIns,MAKEINTRESOURCE(IDB_BITMAP2));
     9 
    10 
    11         SelectObject(hdn_jianrong, hBitMap);//把刚刚创建的那个位图hBitMap给hdc_jianrong
    12         //后面的这两个 0 0 是从源图的什么位置开始拷贝 要是我是 20  20 就是从我源图的20 20开始拷贝
    13         BitBlt(hdc,0,0,500,500,hdn_jianrong,0,0,SRCAND);//那个位图属性设置
    14 
    15         
    16         SelectObject(hdn_jianrong, hBitMap2);
    17         BitBlt(hdc,0,0,500,500,hdn_jianrong,0,0,SRCPAINT);//那个位图属性设置
    18 
    19 
    20         ::DeleteObject(hBitMap2);
    21         ::DeleteObject(hBitMap);
    22 
    23         ::DeleteDC(hdn_jianrong);//删除刚刚那个兼容性HDC
    24         ::ReleaseDC(hWnd,hdc);//释放当前的HDC
    25         break;

    3)总的代码展示:
        

      1 #include<Windows.h>
      2 #include"resource.h"
      3 
      4 HINSTANCE hIns;//创建一个当前应用程序的全局变量,以后就可以直接使用这个变量了
      5 //因为这个变量  我要在WndProc这个函数中使用,但是这个变量存在与WinMain函数中,所以 我定义了一个hInstance的全局变量,这样使得 我可以在WndProc中使用WinMain中的变量
      6 
      7 LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
      8 {
      9     switch(uMsg)
     10     {
     11     case WM_CLOSE://点那个×,窗口关闭
     12         ::PostQuitMessage(0);//消息推出
     13         break;
     14     case WM_PAINT:
     15         HDC hdc=::GetDC(hWnd);//获得当前这个HDC的句柄
     16         HDC hdn_jianrong=::CreateCompatibleDC(hdc);//创建一个兼容性HDC
     17 
     18 
     19         HBITMAP hBitMap=::LoadBitmap(hIns,MAKEINTRESOURCE(BACKGROUND));
     20         HBITMAP hBitMap2=::LoadBitmap(hIns,MAKEINTRESOURCE(IDB_BITMAP2));
     21 
     22         SelectObject(hdn_jianrong, hBitMap);//把刚刚创建的那个位图hBitMap给hdc_jianrong
     23         //后面的这两个 0 0 是从源图的什么位置开始拷贝 要是我是 20  20 就是从我源图的20 20开始拷贝
     24         BitBlt(hdc,0,0,500,500,hdn_jianrong,0,0,SRCAND);//那个位图属性设置
     25 
     26         
     27         SelectObject(hdn_jianrong, hBitMap2);
     28         BitBlt(hdc,0,0,500,500,hdn_jianrong,0,0,SRCPAINT);//那个位图属性设置
     29 
     30         ::DeleteObject(hBitMap2);
     31         ::DeleteObject(hBitMap);
     32         ::DeleteDC(hdn_jianrong);//删除刚刚那个兼容性HDC
     33         ::ReleaseDC(hWnd,hdc);//释放当前的HDC
     34         break;
     35 
     36     }
     37     return ::DefWindowProc( hWnd, uMsg, wParam, lParam);
     38 }
     39 
     40 
     41 int CALLBACK WinMain(HINSTANCE hIstance,
     42                      HINSTANCE hPreInstance,
     43                      LPSTR pCmdLine,
     44                      int nCmdShow)
     45 {
     46             
     47     hIns=hIstance;
     48     HBRUSH hBrush=::CreateSolidBrush(RGB(0,0,255));
     49             
     50     
     51     //1.设计---->就是给WNDCLASSEX结构体初始化(结构体有12个)
     52             WNDCLASSEX wndclass;
     53             wndclass.cbClsExtra=0;
     54             wndclass.cbWndExtra=0;//这两个是确定是否要分配额外的空间
     55             wndclass.cbSize=sizeof(WNDCLASSEX);
     56             wndclass.hbrBackground=hBrush;
     57             wndclass.hCursor=NULL;//光标
     58             //因为上面的那个LoadCUrsor是需要字符串,但是那个IDC_CURSOR1是一个整型数字,所以  需要用那个宏给转定义一下
     59             wndclass.hIcon=NULL;//窗口图标
     60             wndclass.hIconSm=NULL;//窗口左上的图标
     61             wndclass.hInstance=hIstance;
     62             wndclass.lpfnWndProc=WndProc;
     63             wndclass.lpszClassName="wangchao";
     64             wndclass.lpszMenuName=NULL;
     65             wndclass.style=CS_HREDRAW|CS_VREDRAW;
     66 
     67     //2.注册
     68             if(::RegisterClassEx(&wndclass)==FALSE)
     69             {
     70                 ::MessageBox(NULL,"dhsakfljadsf","提示",MB_OK);
     71                 
     72                 return 0;
     73             }
     74     //3.创建
     75                     
     76             HWND hWnd=::CreateWindow("wangchao","xiao_hua",WS_OVERLAPPEDWINDOW,100,0,500,500,NULL,NULL,hIstance,NULL);
     77             
     78         if(hWnd==NULL)
     79         {
     80             ::MessageBox(NULL,"创建失败","提示",MB_OK);
     81             return 0;
     82         }
     83     //4.显式
     84             
     85         ::ShowWindow(hWnd,SW_SHOW);
     86         
     87     //5.消息循环
     88         
     89             MSG msg;
     90             
     91             while(::GetMessage(&msg,0,0,0))
     92         {
     93             //第一步先翻译
     94             ::TranslateMessage(&msg);
     95             //第二部分发
     96             ::DispatchMessageA(&msg);
     97 
     98         }
     99 
    100 
    101     ::DeleteObject(hBrush);
    102 }

    4)文档目录展示:


              

    5)结果展示:
        

          

  • 相关阅读:
    使用阿里云docker加速器
    Linux之screen命令详解
    Linux下Git和GitHub使用方法总结
    CentOS 6&7安装ffmpeg
    用yum安装lamp和lnmp环境
    nginx错误日志error_log日志级别
    CentOS7 yum 安装mysql 5.6
    python实现对数据的写入和读取(excel)
    windows下配置sublime
    远程配置pycharm
  • 原文地址:https://www.cnblogs.com/xiaoyoucai/p/8305071.html
Copyright © 2020-2023  润新知