Windows 程序设计3、4章笔记

简介:   #include "windows.h" #include "stdio.h" #include "stdlib.h"  #include "resource.h"     //预编译我们的资源文件 #include "tchar.
 

#include "windows.h"
#include "stdio.h"
#include "stdlib.h" 
#include "resource.h"     //预编译我们的资源文件
#include "tchar.h"
LRESULT CALLBACK MyProc(
      HWND hwnd,    
      UINT uMsg,    
      WPARAM wParam, 
      LPARAM lParam  
      );
int WINAPI WinMain(
       HINSTANCE hInstance,    
       HINSTANCE hPrevInstance, 
       LPSTR lpCmdLine,        
       int nCmdShow            
       )
{  HWND  hWnd ;
MSG  msg ;
static TCHAR szAppName[] = TEXT ("NewWindow") ; //窗口类名
WNDCLASS  cls ;
cls.cbClsExtra=0 ;
cls.cbWndExtra=0 ;
cls.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH) ;    
cls.hCursor=LoadCursorFromFile("resource\\xx.ani") ;
cls.hIcon=LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1)) ;
cls.hInstance=hInstance ;
cls.lpfnWndProc=MyProc ;
cls.lpszClassName=szAppName;
cls.lpszMenuName=NULL;
cls.style=CS_HREDRAW|CS_VREDRAW| 0x00020000;   //CS_DROPSHADOW  0x00020000在  vc6 以及以前的版本中没有定义 我们可以自定义 这个窗体有阴影
RegisterClass(&cls) ;
hWnd=CreateWindow("NewWindow","SDK_Window Demo",WS_TABSTOP|WS_HSCROLL|WS_VSCROLL|WS_SYSMENU ,200,200,500,400,NULL,NULL,hInstance,NULL) ;
ShowWindow(hWnd,SW_SHOWNORMAL) ;
UpdateWindow(hWnd) ;  

while(GetMessage(&msg,NULL,0,0))  //获得消息 后面2个参数为0会接受任何 win32消息
{
    TranslateMessage(&msg) ; //翻译消息
    DispatchMessage(&msg) ;//分发消息
}

return  0;

}
LRESULT CALLBACK MyProc(
      HWND hwnd,     
      UINT uMsg,      //win32消息的类型
      WPARAM wParam,   //第一个附加参数
      LPARAM lParam  //第二个附加参数一般是值
      )
{  
 switch (uMsg)
 {
 case WM_PAINT :  //UpdateWindow函数的调用会进入这个消息响应
  {
   HDC dc ;
   PAINTSTRUCT ps ;
   dc=BeginPaint(hwnd,&ps) ;
   SetTextAlign(dc,TA_LEFT|TA_TOP) ; //设置基点的位置 。。也就是坐标(0,0)
   TextOut(dc,60,60,_T("GameWnd"),lstrlen(_T("GameWnd")));//include  TCHAR.H  Head File 
   EndPaint(hwnd,&ps) ;
   return 0 ;
  }
 case WM_CREATE :  //当窗体创建的时候 是 窗口过程接受的第一个消息 
  {
 //  SetWindowLong(hwnd,GWL_STYLE,(GetWindowLCong(hwnd,GWL_STYLE)&~WS_CAPTION));  //SetWindowLong 设置窗体的style
      SetScrollRange(hwnd,SB_HORZ,0,100,FALSE) ;   //SetScrollRange 设置 滚动条的范围 是min-max 
   SetScrollPos(hwnd,SB_HORZ,50,FALSE) ;  // SetScrollPos设置滚动条的位置 是相对与 min-max中的位置   最后一个参数设置为false表示不需要重绘
                                                   //InvalidateRect会使客户区域变为 Invalid Area 从而向消息队列中加入  WM_PAINT 消息但始终合格消息的优先级较低 但是我们可以调用 UpdateWindow立即更新窗口
                                       //也就是 说 在调用了 InvalidateRect 时候接着调用 UpdateWindow 才会立即重绘  
                                               //新的函数 GetScrollInfo 和 GetScrollInfo函数可以完成上述四个函数的功能具体应用 MSDN
                                    
   return  0 ;
  }
 case WM_CHAR :
  {
   if('Q'==(char)wParam)
    if(IDYES==MessageBox(hwnd,_T("是否要退出?"),_T("提示"),MB_YESNO) )
    {
     DestroyWindow(hwnd) ;  //销毁窗体
    }
    return 0 ;
  }
 case WM_DESTROY:
  {   
   PostQuitMessage(0);  //向消息队列中发送一个退出消息
   return 0;
  }
  
 }
 return DefWindowProc(hwnd,uMsg,wParam,lParam) ;  //返回缺省的窗口过程
}

目录
相关文章
|
缓存 网络协议 数据安全/隐私保护
[运维笔记] - (命令).Windows server常用网络相关命令总结
[运维笔记] - (命令).Windows server常用网络相关命令总结
753 0
|
6月前
|
Web App开发 人工智能 JSON
Windows版来啦!Qwen3+MCPs,用AI自动发布小红书图文/视频笔记!
上一篇用 Qwen3+MCPs实现AI自动发小红书的最佳实践 有超多小伙伴关注,同时也排队在蹲Windows版本的教程。
1078 1
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
275 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
Linux Apache C++
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
该文介绍了如何在Windows环境下为FFmpeg集成SRT协议支持库libsrt。首先,需要安装Perl和Nasm,然后编译OpenSSL。接着,下载libsrt源码并使用CMake配置,生成VS工程并编译生成srt.dll和srt.lib。最后,将编译出的库文件和头文件按照特定目录结构放置,并更新环境变量,重新配置启用libsrt的FFmpeg并进行编译安装。该过程有助于优化直播推流的性能,减少卡顿问题。
428 2
FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt
|
存储 安全 数据安全/隐私保护
Windows 32 汇编笔记(一):基础知识
Windows 32 汇编笔记(一):基础知识
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
540 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
编解码 Linux Windows
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
在Windows环境下,为FFmpeg集成音频编解码库,包括libogg、libvorbis和opencore-amr,涉及下载源码、配置、编译和安装步骤。首先,安装libogg,通过配置、make和make install命令完成,并更新PKG_CONFIG_PATH。接着,安装libvorbis,同样配置、编译和安装,并修改pkgconfig文件。之后,安装opencore-amr。最后,重新配置并编译FFmpeg,启用ogg和amr支持,通过ffmpeg -version检查是否成功。整个过程需确保环境变量设置正确,并根据路径添加相应库。
424 1
FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr
|
存储 编译器 Linux
Windows 32 汇编笔记(二):使用 MASM
Windows 32 汇编笔记(二):使用 MASM
|
Linux 编译器 C语言
FFmpeg开发笔记(二)搭建Windows系统的开发环境
在Windows上学习FFmpeg通常较困难,但通过安装预编译的FFmpeg开发包可以简化流程。首先需要安装MSYS2来模拟Linux环境。下载并执行MSYS2安装包,然后修改msys2_shell.cmd以继承Windows的Path变量。使用pacman安装必要的编译工具。接着,下载预编译的FFmpeg Windows包,解压并配置系统Path。最后,在MSYS2环境中运行`ffmpeg -version`确认安装成功。欲深入学习FFmpeg开发,推荐阅读《FFmpeg开发实战:从零基础到短视频上线》。
434 4
FFmpeg开发笔记(二)搭建Windows系统的开发环境
|
编解码 Windows
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid
XviD是开源MPEG-4视频编码器,与DivX相似但后者非开源。早期MP4常使用XviD或DivX编码,现已被H.264取代。在Windows上集成FFmpeg的XviD编解码库libxvid,需访问<https://labs.xvid.com/source/>下载源码,解压后在MSYS环境中配置、编译和安装。之后重新配置FFmpeg,启用libxvid并编译安装。详细步骤包括configure命令、make和make install。成功后,通过`ffmpeg -version`检查是否启用libxvid。更多音视频开发技术可参考《FFmpeg开发实战:从零基础到短视频上线》。
317 0
FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid