windows编程(C++),求助!
下面是用c进行的windows编程,请问怎么翻译成c++代码的windows编程代码啊?
谢谢!
/*---------------------------------------------------------------------------
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 ;
}
问题点数:20、回复次数:6Top
1 楼happydivid(泓笑)回复于 2005-11-19 16:34:58 得分 0
怎么没人帮忙?
是不是不可以,还是其它原因啊?是其它原因的话,请说说。谢谢!!!Top
2 楼runrunrun(农妇、山泉、有点田)回复于 2005-11-19 16:52:42 得分 1
为什么要翻译?直接当C++用就行了Top
3 楼happydivid(泓笑)回复于 2005-11-19 17:47:19 得分 0
int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...)
中的CDECL是干什么用的?Top
4 楼bingbox_1984(苦丁茶)(我只喜欢CC)回复于 2005-11-19 17:59:07 得分 5
又是<windows程序设计>,我感觉自己都上当了
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=209225Top
5 楼fiftymetre(50米深蓝)回复于 2005-11-19 20:57:13 得分 10
cdecl 是函数调用过程中参数入栈 方式 及函数堆栈的消耗由谁控制
省略号表示 参数可变 不确定
关于...的用法请参看,MSDN开发高手2004年第8期,可变参数的函数设计
还有LZ你这样说是不正确的,这是WIN下的SDK设计了,没有必要来什么C++什么的牵强附会。
还有windows程序设计是本好书,请不要BSTop
6 楼flyseahappy(花花世界)回复于 2005-11-19 20:58:51 得分 4
CDECL,应该是一种调用方式,stdcall也就,也就谁负责却函数的参数压入与弹出的操作,及是从左到右还是从右到左.这个问题已经有人问过了。
_stdcall是在被调函数内部恢复堆栈指针
_cdecl是在被调函数返回后,在调用函数内恢复堆栈指针
__cdecl
函数的参数个数可变(就像printf函数一样),因为只有调用者才知道它传给被调用函数几个参数,才能在调用结束时适当地调整堆栈。
_stdcall
函数的参数个数不能是可变的
当然还有一些区别,有兴趣可以去看看啦Top




