c.m.obrecht

Anmeldungsdatum: 09.03.2006 Beiträge: 377 Wohnort: Hofstetten SO, CH
|
Verfasst am: 03.06.2007, 00:24 Titel: C++ WinAPI Int <-> string |
|
|
Blöde Frage Wollte eigentlich nur im Borland C++ mittels WinAPI testen ob der Inline Assembler auch so funktioniert (bei .NET geht das ja nicht). Dazu - und auch um etwas mit WinAPI zu üben und nicht nur leere Fenster zu erzeugen bzw. nur mit Text - dachte ich ich mache 2 Edits und lasse mittels ASM zwei Zahlen addieren z.B.; nun, kenne von ASM unter DOS die Umrechenfunktion von BCD -> ASCII; wie geht das hier? Habe eine Funktion aber komme damit gar nicht zurecht, das Blöde; wo/wie macht man Deklarationen? Am Anfang des Programmcodes klappte es nicht; kenne das nur vom C mit Konsole so wirklich und der String muss dort ja noch separat eingebunden werden...
Habe diverse Versuche, welche das Programm entweder gar nicht kompilieren liessen oder gleich abstürzen auskommentiert und mit !!!!! versehen.
Code: |
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS wc;
const char szAppName[] = "Editcontrol Tutorial";
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szAppName;
RegisterClass(&wc);
hWnd = CreateWindow( szAppName,
"Editcontrol Tutorial",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL );
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hEdit;
static HWND hEdit2;
static HWND hButton;
switch (message)
{int a;
//char *buffer = malloc( sizeof(char) * 20 ); !!!!!!!!!!!
case WM_CREATE:
{
char *buffer2 = NULL;
char *buffer = NULL;
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,
"edit",
buffer, // <- das ist der Inhalt der Editfelds
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
ES_AUTOVSCROLL,
0, 0, 0, 0, //Koordinaten anstelle MoveWindow
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
// a = atoi( buffer ); !!!!!!!!
//free(buffer);
hEdit2 = CreateWindowEx(WS_EX_CLIENTEDGE,
"edit",
buffer2, // <- das ist der Inhalt der Editfelds
WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE |
ES_AUTOVSCROLL,
0, 0, 0, 0,
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
free(buffer2);
hButton = CreateWindow( "button",
"los",
WS_CHILD | WS_VISIBLE,
0, 0, 0, 0,
hWnd,
NULL,
((LPCREATESTRUCT) lParam) -> hInstance,
NULL);
return 0;
}
case WM_SIZE:
{
MoveWindow(hEdit, 0, 0, 90, 20, TRUE);
MoveWindow(hEdit2, 100, 100, 90, 20, TRUE);
MoveWindow(hButton, LOWORD(lParam) / 2 - 80, HIWORD(lParam) - 30,
160, 22, TRUE);
return 0;
}
case WM_COMMAND:
{
if (lParam == (LPARAM)hButton)
{
if (HIWORD(wParam) == BN_CLICKED)
MessageBox (0, "Hoi", ":D", 64);
return 0;
}
return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
//atoi(LPCSTR string) oder _wtoi(LPCWSTR string) oder besser: _ttoi(LPCTSTR string)
//String in Zahl
|
_________________ ...längre blomstre gamle nord... |
|