您的位置:首页 > 其它

Windows API 弹出文本框输入的内容

2015-07-02 22:51 477 查看
/*程序功能:点击button按钮弹出输入框的文本*/
#include<windows.h>

struct
{
int iStyle;
TCHAR * szText;
}
button[]=
{
BS_PUSHBUTTON,          TEXT("BS_PUSHBUTTON"),
BS_DEFPUSHBUTTON,       TEXT("BS_DEFPUSHBUTTON")
};

#define NUM (sizeof button /sizeof button[0])  //num=2

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);  //申明函数

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow)
{
static TCHAR szAppName[]= TEXT ("app1");

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("程序要求 Windows NT 系统!"),szAppName,MB_ICONERROR);

return 0;
}

hwnd = CreateWindow (szAppName,
TEXT ( "WindowsAPI程序-按钮实例 "),
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 hwndButton[NUM];  //按钮句柄集合
static HWND hwndTxt;
static HWND hwndBtnSure;
static HWND hwndBtnSure2;
static HWND hwndChild;
static RECT rect; //矩形结构体
//char数组
static TCHAR szTop[]       =TEXT("功能:点击按钮显示文本框内容"),
szUnd[]       =TEXT("_______          ______          ______"),
szFormat[]    =TEXT("%-16s%04X-%04X         %04X-%04X"),  //关于格式化字符串参考 http://blog.163.com/c__0/blog/static/188312066201162661240584/ szBuffer[50];
char constStr[]= { ",欢迎进入C++世界" };
char outputStr[256];
static int cxChar,cyChar;
HDC    hdc;     //绘图实例句柄
HDC    childHdc;
PAINTSTRUCT ps; //绘制结构体
int i,len;
switch (message)
{
//创建
case WM_CREATE:

cxChar=LOWORD(GetDialogBaseUnits());
cyChar=HIWORD(GetDialogBaseUnits());

//文本框
hwndTxt = CreateWindow   (
"edit",
"",
WS_CHILD|WS_VISIBLE|WS_BORDER|BS_TEXT,
250,  100,   300,22,
hwnd,
(HMENU)1,
((LPCREATESTRUCT) lParam)->hInstance,
NULL
);

//按钮
hwndBtnSure2 = CreateWindow(
TEXT("button"),
"点击我2",
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
230,
190,
20*cxChar,
7*cyChar/4,
hwnd,
(HMENU)3,
((LPCREATESTRUCT) lParam)->hInstance,
NULL
);

hwndBtnSure=CreateWindow(
TEXT("Button"),
"点击我",
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
230,
150,
20*cxChar,
7*cyChar/4,
hwnd,
(HMENU)2,
((LPCREATESTRUCT) lParam)->hInstance,NULL);

return 0;

case WM_SIZE:
rect.left=24* cxChar;
rect.top=2*cyChar;
rect.right=LOWORD(lParam);
rect.bottom=HIWORD(lParam);
return 0;

case WM_PAINT:

InvalidateRect(hwnd,&rect,TRUE);

hdc=BeginPaint(hwnd,&ps);

SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  //选取当前字体
SetBkMode(hdc,TRANSPARENT) ;// 背景设置成透明

// SetBkColor(hdc,GetSysColor(COLOR_BTNFACE));
SetTextColor(hdc,GetSysColor(COLOR_BTNTEXT)); //设置文本颜色

TextOut(hdc,24*cxChar,cyChar,szTop,lstrlen(szTop));
//TextOut(hdc,24*cxChar,cyChar,szUnd,lstrlen(szUnd));

EndPaint(hwnd,&ps);
return 0;

case WM_DRAWITEM:
case WM_COMMAND:

hdc=GetDC(hwnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));  //选取当前字体

//获取当前子窗口句柄
hwndChild=(HWND)lParam;
if(hwndChild==hwndBtnSure)
{
char szBuff[256];
GetWindowText(hwndTxt,szBuff,sizeof(szBuff));
if(strlen(szBuff)==0)
return 0;

for(i=0;i<sizeof(outputStr);i++)
{
if(i==0)
len=strlen(szBuff);
szBuff[len++]=constStr[i];
}
MessageBox(NULL, szBuff,TEXT("提示"),0);
}
else if(hwndChild==hwndBtnSure2)
{
MessageBox(NULL,TEXT("按钮2点击了"),TEXT("提示"),0);
}

ReleaseDC(hwnd,hdc);
ValidateRect(hwnd,&rect);
break;

case WM_CTLCOLORBTN:
/*
childHdc=(HDC)wParam;
SetBkColor(childHdc,GetSysColor(COLOR_BTNFACE));
SetTextColor(childHdc,GetSysColor(COLOR_HIGHLIGHT));
ReleaseDC((HWND)lParam,childHdc);
*/
break;

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

return DefWindowProc (hwnd,message,wParam,lParam);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: