• windows 编程—— 常用函数 与 操作


    目录:

    1.  MessageBox() 和 PlaySound()
    2.  获得窗口 或屏幕大小
    3.  获得字体大小
    4.  输出文字
    5.  屏蔽和显示控制台窗口

    1、 MessageBox() 和 PlaySound()

     MessageBox() 参数说明 :link here

     PlaySound() 参数说明 :link here

     1// test for function MessageBox() and PlaySound()
     2 // The program play the music file "c:UsersAdministratorDesktopVictory.wav" 
     3 
     4 #include<windows.h>
     5 #include<stdio.h>
     6 #pragma comment(lib,"winmm.lib") // 告诉连接器与这个库连接,因为我们要播放多媒体声音
     7 #pragma comment( linker, "/subsystem:"console" /entry:"WinMainCRTStartup"") 
     8 
     9 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nShowCmd)
    10 {
    11     system("title music player");
    12     system("color 0b");
    13 
    14     PlaySound("SystemStart",NULL, SND_ALIAS|SND_ASYNC);
    15     printf("startup!
    ");
    16 
    17     MessageBox(NULL,TEXT("即将播放音乐"),TEXT("提示"),MB_OK|MB_ICONINFORMATION);
    18     int rtn;
    19     do{
    20         printf("victory begin playing!
    ");
    21         PlaySound("c:\Users\Administrator\Desktop\Victory.wav", NULL, SND_FILENAME | SND_ASYNC);
    22         rtn=MessageBox(NULL,TEXT("播放中,按重试重新播放,按取消结束播放"),TEXT("this is title"),MB_RETRYCANCEL |MB_ICONINFORMATION);
    23         if(rtn==IDCANCEL)
    24         {    
    25             PlaySound(NULL,NULL,NULL);
    26             printf("music has been stop!
    ");
    27             break;
    28         }
    29     }while(rtn== IDRETRY);
    30     
    31     MessageBox(NULL,TEXT("播放程序已结束"),TEXT("提示"),MB_ICONINFORMATION);
    32     return 0;
    33 }
    MessageBox() PlaySound() 

    遗留问题—— 如何自定义MessageBox里的按钮?(可能思路:了解MessageBox的实现原理,以及相关的窗口原理,了解相应API ,所以可以先把Window编程相关知识看完,然后就是提高英语的阅读能力,使自己能够读懂MSDN上的document 和 stackFlow 等论坛上的专业解答)。。。。。。

     2、获得窗口大小

    窗口大小:

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

    窗口矩形:

     GetClientRect (hwnd, &rect) ;

    屏幕:

    cxScreen=GetSystemMetrics ( SM_CXSCREEN) ;
    cyScreen=GetSystemMetrics ( SM_CYSCREEN) ;

    3、获得字体大小

      TEXTMETRIC    tm ;
      hdc = GetDC (hwnd) ;
            
     SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
     GetTextMetrics (hdc, &tm) ;
    
     cxChar = tm.tmAveCharWidth ;
     cyChar = tm.tmHeight + tm.tmExternalLeading ;

    cxChar = LOWORD (GetDialogBaseUnits ()) ;
    cyChar = HIWORD (GetDialogBaseUnits ()) ;

     4、输出文字

    DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
                       DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

    //字体
     SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT)) ;
     //字的背景模式
     SetBkMode (hdc, TRANSPARENT) ;
        
     TextOut (hdc, 24 * cxChar, cyChar, szTop, lstrlen (szTop)) ;

    5、屏蔽和显示控制台窗口

    屏蔽控制台应用程序窗口 :link here

    如何在Windows Application中应用printf函数? :link here

  • 相关阅读:
    东芝开发板驱动OLED模块显示LOGO图片
    东芝MCU实现位带操作
    使用系统定时器SysTick实现精确延时微秒和毫秒函数
    VC++调试错误的解决方案
    #pragma once与 #ifndef的区别
    strcmp()字符串比较函数用法
    C、C++中的static和extern关键字
    error LNK1169 找到一个或多个多重定义的符号的解决方法
    vs2013编译obs源码
    Qt线程—QThread的使用--run和movetoThread的用法
  • 原文地址:https://www.cnblogs.com/BensonLaur/p/5237439.html
Copyright © 2020-2023  润新知