SDK 编辑框 按钮 练习小程序

来源:互联网 发布:新楼兰怎么样知乎 编辑:程序博客网 时间:2024/05/16 17:31
#include <windows.h>


#define IDE_EDIT1 101
#define IDE_EDIT2 102
#define IDB_COPY  103


static HWND hEdit1wnd = NULL;
static HWND hEdit2wnd = NULL;


BOOL CreateEdit1(HWND hwnd);
BOOL CreateEdit2(HWND hwnd);
BOOL CreateCopyBtn(HWND hwnd);


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;


int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND         hwnd ;
MSG          msg ;
WNDCLASS     wndclass ;

wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc   = WndProc ;
wndclass.cbClsExtra    = 0 ;
wndclass.cbWndExtra    = 0 ;
wndclass.hInstance     = hInstance ;
wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName  = NULL ;
wndclass.lpszClassName = szAppName ;

if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
szAppName, MB_ICONERROR) ;
return 0 ;
}

hwnd = CreateWindow (szAppName,                  // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW,        // window style
CW_USEDEFAULT,              // initial x position
CW_USEDEFAULT,              // initial y position
CW_USEDEFAULT,              // initial x size
CW_USEDEFAULT,              // initial y size
NULL,                       // parent window handle
NULL,                       // window menu handle
hInstance,                  // program instance handle
NULL) ;                     // creation parameters

if(!CreateEdit1(hwnd))
    {
        return FALSE;
    }
if(!CreateEdit2(hwnd))
    {
        return FALSE;
    }
//*
if(!CreateCopyBtn(hwnd))
    {
        return FALSE;
    }
//*/

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)
{
HDC         hdc ;
PAINTSTRUCT ps ;
RECT        rect ;


char buf[20];
int nAddLen = 0;

switch (message)
{
case WM_CREATE:
return 0 ;

case WM_SETFOCUS://设置焦点
SetFocus(hEdit1wnd);
break;


case WM_COMMAND:
switch(LOWORD(wParam))
        {
        case IDB_COPY:
nAddLen = GetWindowTextLength(hEdit1wnd) + 1;
GetWindowText(hEdit1wnd, buf, nAddLen );
// buf[nAddLen] = '\0';
SetWindowText(hEdit2wnd, buf);


default:
break;
}
break;

case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

// DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}


/*
* create edit1
*/
BOOL CreateEdit1(HWND hwnd)
{
    HWND hchildwnd = NULL;
    hchildwnd = CreateWindow("EDIT",
        NULL,
        WS_VISIBLE | WS_CHILD | WS_BORDER, //|ES_READONLY
        275,100,
        100,20,
        hwnd,
        HMENU(IDE_EDIT1),
        NULL,
        NULL);
    if(!hchildwnd)
    {
        return FALSE;
    }
    hEdit1wnd = hchildwnd;
    return TRUE;
}


/*
* create edit2
*/
BOOL CreateEdit2(HWND hwnd)
{
    HWND hchildwnd = NULL;
    hchildwnd = CreateWindow("EDIT",
        NULL,
        WS_VISIBLE | WS_CHILD | WS_BORDER | ES_READONLY,//
        475,100,
        100,20,
        hwnd,
        HMENU(IDE_EDIT1),
        NULL,
        NULL);
    if(!hchildwnd)
    {
        return FALSE;
    }
    hEdit2wnd = hchildwnd;
    return TRUE;
}


BOOL CreateCopyBtn(HWND hwnd)
{
    
    CreateWindow("BUTTON",
        "Copy",
        WS_VISIBLE | WS_CHILD,
        320,200,100,20,
        hwnd,
        HMENU(IDB_COPY),
NULL,
        NULL);
    if(!hwnd)
    {
        return FALSE;
    }
    return TRUE;
}
原创粉丝点击