2012-10-31 60 views
0

我想使用Win32 API來顯示messsagebox ...如何使用C++ win32 API連接消息箱文本中的值?

int pwdexpirydays=5; MessageBox(hdlg,(LPCSTR)("Your password will expire in %d days",&pwdexpirydays),(LPCSTR)"Logon Message",MB_OK | MB_ICONINFORMATION);

,但我不能獲得價值...

如何我concate的pwdexpirydays值到"Your password will expire in %d days"此字符串。

回答

3

您可以使用snprintf或std :: string進行連接。

+0

@ Drakosha:'sprintf的(味精, 「您的密碼將在%d天后過期。」,pwdexpirydays); \t \t \t \t \t \t \t \t strcat(msg,「你想現在改變它?」); \t \t \t \t \t \t \t \t的MessageBox(hDlg,TEXT(MSG),TEXT( 「登錄信息」),MB_OKCANCEL | MB_ICONWARNING)'這是代碼...當我運行這個報錯是這樣的... ** Lmsg未聲明的標識符** ... ** TEXT(味精)**是問題...該怎麼辦? –

+1

@SanjuMonu - TEXT()僅用於靜態響應,而不是變量 - 它所做的只是在UNICODE構建中添加一個L前綴 - 例如。 TEXT(「foo」)變成L「foo」。如果您編譯爲unicode,則使用_snwprintf而不是ANSI sprintf。 – BrendanMcK

+0

@ Drakosha:雅,我明白了。使用'(LPCWSTR)msg'正確地給出字符串值...謝謝你的幫助。 –

3

如果你正在做很多,你可能想考慮一個功能,使其快速和容易。

int MsgBoxPrint(HWND hWnd, int Type, char *Caption, char *Format, ...) 
{ 
    va_list ArgList; 
    char Temp[4096]; 

    va_start(ArgList, Format); 
    vsnprintf(Temp, 4096, Format, ArgList); 
    va_end(ArgList); 

    return MessageBox(hWnd, Temp, Caption, Type); 
} 

您需要調用它像這樣:

MsgBoxPrint(hdlg, MB_OK | MB_ICONINFORMATION, "Logon Message", \ 
    "Your password will expire in %d days", pwdexpirydays); 
相關問題