windows 编程—— 常用函数 与 操作
目录:
- MessageBox() 和 PlaySound()
- 获得窗口 或屏幕大小
- 获得字体大小
- 输出文字
- 屏蔽和显示控制台窗口
1、 MessageBox() 和 PlaySound()
MessageBox() 参数说明 :link here
PlaySound() 参数说明 :link here

1// test for function MessageBox() and PlaySound() 2 // The program play the music file "c:\Users\Administrator\Desktop\Victory.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!\n"); 16 17 MessageBox(NULL,TEXT("即将播放音乐"),TEXT("提示"),MB_OK|MB_ICONINFORMATION); 18 int rtn; 19 do{ 20 printf("victory begin playing!\n"); 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!\n"); 27 break; 28 } 29 }while(rtn== IDRETRY); 30 31 MessageBox(NULL,TEXT("播放程序已结束"),TEXT("提示"),MB_ICONINFORMATION); 32 return 0; 33 }
遗留问题—— 如何自定义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
版权声明 本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者 BensonLaur 和本文原始地址: https://www.cnblogs.com/BensonLaur/p/5237439.html |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端