/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Simpel tekstboks i Windows
Fra : Morten Bakkedal


Dato : 27-02-04 21:13

Håber det er i orden med et lille spørgsmål om Win32-API'en.

Jeg skal lave et lille simpelt program, der skal tage imod et brugernavn
og en adgangskode. I API'en findes funktionen MessageBox, der kan tage
imod svar på simple ja/nej-spørgsmål. Jeg havde forestillet mig, at der
fandtes en tilsvarende funktion, der kunne tage imod en streng, men det er
ikke lykkedes mig at finde den.

Findes en sådan funktion eller spilder jeg min tid ved at lede videre?

Jeg vil helst have at det skal være så simpelt som muligt.

Morten


 
 
FePe (27-02-2004)
Kommentar
Fra : FePe


Dato : 27-02-04 21:43

Morten Bakkedal wrote:

> Håber det er i orden med et lille spørgsmål om Win32-API'en.
>
> Jeg skal lave et lille simpelt program, der skal tage imod et brugernavn
> og en adgangskode. I API'en findes funktionen MessageBox, der kan tage
> imod svar på simple ja/nej-spørgsmål. Jeg havde forestillet mig, at der
> fandtes en tilsvarende funktion, der kunne tage imod en streng, men det er
> ikke lykkedes mig at finde den.
>
> Findes en sådan funktion eller spilder jeg min tid ved at lede videre?
>
> Jeg vil helst have at det skal være så simpelt som muligt.
>
> Morten

Brug InputBox.

Fra Hjælpefilen:

--
InputBox displays an input dialog box that enables the user to enter a string.

Unit

Dialogs

Category

dialog and message routines

function InputBox(const ACaption, APrompt, ADefault: string): string;

Description

Call InputBox to bring up an input dialog box ready for the user to enter a
string in its edit box. The ACaption parameter is the caption of the dialog
box, the APrompt parameter is the text that prompts the user to enter input in
the edit box, and the ADefault parameter is the string that appears in the
edit box when the dialog box first appears.

If the user chooses the Cancel button, InputBox returns the default string. If
the user chooses the OK button, InputBox returns the string in the edit box.

Use the InputBox function when there is a default value that should be used
when the user chooses the Cancel button (or presses Esc) to exit the dialog.
If the application needs to know whether the user chooses OK or Cancel , use
the InputQuery function.
--

Mvh. FePe.
--
Lægerne anbefaler: at man ser mindst 14 timers Simpsons hver dag.



FePe (27-02-2004)
Kommentar
Fra : FePe


Dato : 27-02-04 21:45

FePe wrote:

> function InputBox(const ACaption, APrompt, ADefault: string): string;

Okay, det er vist Delphi (eller Object Pascal, hvis man skal være mere præcis),
men funktionen/proceduren hedder vel det samme i C/C++.

Mvh. FePe.
--
Lægerne anbefaler: at man ser mindst 14 timers Simpsons hver dag.



Morten Bakkedal (27-02-2004)
Kommentar
Fra : Morten Bakkedal


Dato : 27-02-04 22:00

On Fri, 27 Feb 2004 21:45:07 +0100, FePe wrote:

>> function InputBox(const ACaption, APrompt, ADefault: string): string;
>
> Okay, det er vist Delphi (eller Object Pascal, hvis man skal være mere
> præcis), men funktionen/proceduren hedder vel det samme i C/C++.

Den er vist Delphi-specifik. Jeg kan i hvert fald ikke finde den i min
Win32-reference.

Jeg ville helst have min (C++)-kode til at virke under alle
compiler-miljøer til Windows.

Morten

Ivan Johansen (27-02-2004)
Kommentar
Fra : Ivan Johansen


Dato : 27-02-04 22:20

FePe wrote:
>>function InputBox(const ACaption, APrompt, ADefault: string): string;
> Okay, det er vist Delphi (eller Object Pascal, hvis man skal være mere præcis),
> men funktionen/proceduren hedder vel det samme i C/C++.

Ja, men funktionen findes i VCL, som er det library der følger med
Delphi og C++ Builder. Den findes ikke i Win API.

Ivan Johansen

Thomas (04-03-2004)
Kommentar
Fra : Thomas


Dato : 04-03-04 18:07

On Fri, 27 Feb 2004 21:12:35 +0100, Morten Bakkedal
<news20040522@bakkeland.dk> wrote:

>Håber det er i orden med et lille spørgsmål om Win32-API'en.
>
>Jeg skal lave et lille simpelt program, der skal tage imod et brugernavn
>og en adgangskode. I API'en findes funktionen MessageBox, der kan tage
>imod svar på simple ja/nej-spørgsmål. Jeg havde forestillet mig, at der
>fandtes en tilsvarende funktion, der kunne tage imod en streng, men det er
>ikke lykkedes mig at finde den.
>
>Findes en sådan funktion eller spilder jeg min tid ved at lede videre?
>
>Jeg vil helst have at det skal være så simpelt som muligt.
>
>Morten

Jeg er ikke stødt på en sådan funktion. MessageBox er ikke særlig
fleksibel - man kan kun sætte en tekst, en eller flere knapper og så
evt. en icon på. Med Win32-API'en er man nødt til at bygge sin
dialog-box selv. For at bygge selve dialogen op har jeg brugt
resource-editoren og dialogen popper op når man kalder DialogBox(...).

Mvh
Thomas


--------------- kode ------------------

/***********************/
/* login.rc */
/***********************/
#include "resource.h"
#include "afxres.h"

LOGIN DIALOGEX 32, 32, 208, 123
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Enter password:",IDC_STATIC,15,54,82,12
EDITTEXT IDS_USERNAME,15,26,160,13,ES_AUTOHSCROLL
LTEXT "Username:",IDC_STATIC,15,14,82,12
EDITTEXT IDS_PASSWORD,15,66,160,13,ES_AUTOHSCROLL
DEFPUSHBUTTON "OK",IDOK,35,97,50,14
PUSHBUTTON "Cancel",IDCANCEL,103,98,50,14
END


/***********************/
/* resource.h */
/***********************/
#ifndef _resource_h
#define _resource_h

#define IDM_INPUT 1000
#define IDS_USERNAME 1001
#define IDS_PASSWORD 1002

#endif


/***********************/
/* login.c */
/***********************/

#include <windows.h>
#include "resource.h"

static HINSTANCE hInst;
static HWND hMain;
static char username[50];
static char password[50];

LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
lParam)
{
switch (msg)
{
case WM_INITDIALOG:
return 1;

case WM_COMMAND:

switch (LOWORD (wParam))
{
case IDOK:
GetDlgItemText(hDlg, IDS_USERNAME, username, 50);
GetDlgItemText(hDlg, IDS_PASSWORD, password, 50);
EndDialog (hDlg, 0);
return 1;

case IDCANCEL:
EndDialog (hDlg, 0);
return 1;
}
break;

}
return 0;
}


LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM
lParam)
{

switch (msg)
{
case WM_COMMAND:

switch (LOWORD (wParam))
{
case IDM_INPUT:
DialogBox(hInst, TEXT ("LOGIN"), hWnd, (WNDPROC)DlgProc);
MessageBox(hWnd, username, "username", MB_OK);
MessageBox(hWnd, password, "password", MB_OK);
break;
}
return 0;

case WM_DESTROY :
PostQuitMessage(0);
return 0;
}

return DefWindowProc (hWnd, msg, wParam, lParam);
}


Menu()
{
HMENU hPop;
HMENU hMenu;

hPop = CreateMenu();
hMenu = CreateMenu();
AppendMenu(hPop, MF_STRING, IDM_INPUT, "Input");
AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hPop,"Test");
SetMenu(hMain, hMenu);
}


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MSG msg ;
WNDCLASS wndclass ;

hInst = hInstance;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = NULL;
wndclass.hCursor = NULL;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = "Login";

RegisterClass (&wndclass);

hMain = CreateWindow ("Login", TEXT ("Input Dialog"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;

Menu();

ShowWindow (hMain, iCmdShow) ;
UpdateWindow (hMain) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}

return (int)msg.wParam ;
}



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408183
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste