| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 532 人关注过本帖
标题:《windows程序设计》上Unicode简介一章中的示例代码中有几个只是点不懂,请 ...
只看楼主 加入收藏
昱菲轩
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
《windows程序设计》上Unicode简介一章中的示例代码中有几个只是点不懂,请大家指点一下
SCRNSIZE.C
        
/*---------------------------------------------------------------------------
        
    SCRNSIZE.C -- Displays screen size in a message box
        
                 (c) Charles Petzold, 1998
        
----------------------------------------------------------------------------*/
        
#include <windows.h>        
#include <tchar.h>           
#include <stdio.h>           
int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...)        
{
    TCHAR   szBuffer [1024] ;        
    va_list pArgList ;        
    // The va_start macro (defined in STDARG.H) is usually equivalent to:        
    // pArgList = (char *) &szFormat + sizeof (szFormat) ;        
    va_start (pArgList, szFormat) ;        
    // The last argument to wvsprintf points to the arguments        
    _vsntprintf ( szBuffer, sizeof (szBuffer) / sizeof (TCHAR),        
                   szFormat, pArgList) ;        
    // The va_end macro just zeroes out pArgList for no good reason        
    va_end (pArgList) ;        
    return MessageBox (NULL, szBuffer, szCaption, 0) ;        
}        
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,        
                   PSTR szCmdLine, int iCmdShow)        
{        
    int cxScreen, cyScreen ;        
    cxScreen = GetSystemMetrics (SM_CXSCREEN) ;        
    cyScreen = GetSystemMetrics (SM_CYSCREEN) ;        
    MessageBoxPrintf (    TEXT ("ScrnSize"),        
                   TEXT ("The screen is %i pixels wide by %i pixels high."),        
                   cxScreen, cyScreen) ;
     return 0 ;      
}
上面的代码是《windows程序设计》上Unicode简介一章中的示例代码。
它实现了“格式化消息框”

对于上面的代码,我有一些知识点不了解:
1、在int CDECL MessageBoxPrintf(TCHAR* szCaption, TCHAR* szFormat,...)
     {
            ...
            ...
            ...
            return MessageBox(NULL,szBuffer, szCaption, 0);
     }
    中的int CDECL 是什么意思?是不是return MessageBox()的返回类型?
2、 代码
    va_list pArgList;
    va_start (pArgList, szFormat);
      _vsntprintf ( szBuffer, sizeof (szBuffer) / sizeof (TCHAR),        
                   szFormat, pArgList) ;     
    va_end (pArgList) ;
    完成的是什么工作?


初来乍到,还请多多关照!
搜索更多相关主题的帖子: screen include message 程序设计 
2013-05-01 14:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
1. CDECL 只是VC定义的一个宏。__cdecl _stdcall _fastcall _thiscall 等修饰的是函数
2. 取出 可变参数(variable-argument)

都是C/C++基础知识
2013-05-02 09:54
昱菲轩
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-4-18
收藏
得分:0 
谢谢版主了!
2013-05-03 08:04
快速回复:《windows程序设计》上Unicode简介一章中的示例代码中有几个只是点不懂 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011082 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved