Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wstawienie zmiennej int do MessageBox w WINAPI

Ostatnio zmodyfikowano 2021-03-08 10:50
Autor Wiadomość
slyys72
Temat założony przez niniejszego użytkownika
Wstawienie zmiennej int do MessageBox w WINAPI
» 2021-03-08 08:23:36
Witam,
męczę się ze wstawieniem zmiennej int do komunikatu MessageBox w WINAPI.
Przeszukałem googla w każdą stronę. Co innym się udawało u mnie nie działa.

Załączam cały kod, który jest prosty. Tworzy okno , losuje cyfre i ma ją wstawić w komuinikacie MessageBox w miejsce "Tu ma być wartość zmiennej liczba".
Z założenia proste ( niestety nie dla mnie ). Może ktoś zmodyfikuje ten kod ?

C/C++
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include<cstdlib>
#include<ctime>
#include<string>

using namespace std;

LPCTSTR NazwaKlasy = TEXT( "Okno Aplikacji" );
MSG Komunikat; // przechowanie komunikatow z systemu

LRESULT CALLBACK ObslugaZdarzen( HWND hwind, UINT umsg, WPARAM wParam, LPARAM lParam ); // naglowek funkcji obslugujacej zdarzenia

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE HprevInstance, LPSTR plCmdLine, int nCmdShow )
{
   
   
WNDCLASSEX wc; // zdefiniowanie struktury okna glownego programu
   
wc.cbSize = sizeof( WNDCLASSEX );
   
wc.style = 0;
   
wc.lpfnWndProc = ObslugaZdarzen;
   
wc.cbClsExtra = 0;
   
wc.cbWndExtra = 0;
   
wc.hInstance = hInstance;
   
wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
   
wc.hCursor = LoadCursor( NULL, IDC_SIZEALL );
   
wc.hbrBackground =( HBRUSH )( COLOR_BTNTEXT );
   
wc.lpszMenuName = NULL;
   
wc.lpszClassName = NazwaKlasy;
   
wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
   
   
if( !RegisterClassEx( & wc ) ) // rejestracja okna w systemie
   
{
       
MessageBox( NULL, TEXT( "Błąd rejestracji okna!" ), TEXT( "Niestety..." ), MB_ICONEXCLAMATION | MB_OK );
       
return 1;
   
}
   
   
HWND h_glowneokno; // uchwyt na okno glowne
   
h_glowneokno = CreateWindowEx( WS_EX_WINDOWEDGE, NazwaKlasy, TEXT( "Pierwsze okno" ), WS_OVERLAPPEDWINDOW,
   
CW_USEDEFAULT, CW_USEDEFAULT, 950, 650, NULL, NULL, hInstance, NULL ); // utworzenie okna glownego
   
if( h_glowneokno == NULL )
   
{
       
MessageBox( NULL, TEXT( "Błąd utworzenia okna" ), TEXT( "Blad" ), MB_ICONEXCLAMATION );
       
return 1;
   
}
   
   
ShowWindow( h_glowneokno, SW_MAXIMIZE ); // wyswietl okno glowne
   
UpdateWindow( h_glowneokno ); // odswiez okno glowne
   
   
srand( time( nullptr ) );
   
int liczba = rand() % 6 + 1;
   
   
MessageBox( h_glowneokno, TEXT( "Tu ma być wartość zmiennej liczba" ), TEXT( "Losowanie liczb" ), MB_OK | MB_ICONEXCLAMATION );
   
   
while( GetMessage( & Komunikat, NULL, 0, 0 ) ) // petla przechwytujaca komunikaty z systemu
   
{
       
TranslateMessage( & Komunikat );
       
DispatchMessage( & Komunikat );
   
}
   
return static_cast < INT >( Komunikat.wParam );
}

LRESULT CALLBACK ObslugaZdarzen( HWND h_glowneokno, UINT umsg, WPARAM wParam, LPARAM lParam ) // funkcja obslugi zdarzen
{
   
switch( umsg )
   
{
   
case WM_CLOSE: // nacisniecie x w oknie programu
       
DestroyWindow( h_glowneokno );
       
break;
   
case WM_DESTROY:
       
PostQuitMessage( 0 );
       
break;
       
default:
       
return DefWindowProc( h_glowneokno, umsg, wParam, lParam );
       
break;
   
}
   
   
return 0;
}

[ \ cpp ]
P-178255
slyys72
Temat założony przez niniejszego użytkownika
» 2021-03-08 10:50:15
Problem rozwiązałem sam takim przekształceniem.
Może komuś się przyda.
C/C++
srand( time( nullptr ) );
int liczba =( rand() % 6 ) + 1;

wstring strliczba = to_wstring( liczba ); // konwersja z int na wstring
LPCWSTR liczbapokonwersji = strliczba.c_str(); // konwerscja z wstring na LPCWSTR

MessageBox( h_glowneokno, liczbapokonwersji, TEXT( "Losowanie liczb" ), MB_OK | MB_ICONEXCLAMATION );
P-178256
« 1 »
  Strona 1 z 1