首页
社区
课程
招聘
[原创]API CreateWindow 建立文本框
发表于: 2009-5-9 15:49 8853

[原创]API CreateWindow 建立文本框

2009-5-9 15:49
8853
建立了一个文本框,如何得到文本的内容并作处理,如MessageBox出来。
在MFC 看得一头雾水,窗口相关的看得少。哪位提醒下。

HwndTxt = CreateWindow   (   
                  "edit",   
                  Txt,   
                  WS_CHILD|WS_VISIBLE|WS_BORDER|BS_TEXT,   
                  10,  10,   100,22,   
                  hwnd,   
                  (HMENU)   5,   
                  hInst,   
                  NULL   
                  );

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
2
char szBuff[256] = {0};
GetWindowText(HwndTxt,szBuff,sizeof(szBuff));
MessageBox(0,szBuff,NULL,MB_OK);
2009-5-9 15:55
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
我定义了句柄为什么说我没有定义呢。

-------------------------------------------------------------------------

#define STRICT
#include<windows.h>
#include<windowsx.h>
#include<string.h>
#include "stdio.h"
#include "stdlib.h"

#define ID_EDIT 2

char Name[]="Encoders   v1.0";
char Txt[256] ="my txt!";
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

#pragma warning (disable:4068)
#pragma argsused                                         

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInstance,
LPSTR lpszCmdParam,int nCmdShow)
{
        HWND hwnd;
                HWND HwndTxt;
   
        MSG Msg;
        WNDCLASS WndClass;  
        
        memset(&WndClass,0,sizeof(WNDCLASS));
        WndClass.style = 0;
        WndClass.lpfnWndProc = WndProc;
        WndClass.hInstance = hInst;
        WndClass.hbrBackground = (HBRUSH)(COLOR_WINDOW);/*ÆäËûÑÕÉ«¿ÉÒÔÓÃGetStockObject()(HBRUSH)(COLOR_WINDOW+1)Ϊ°×É« COLOR_WINDOW*/
                WndClass.lpszClassName = Name;
        WndClass.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(11)) ;    //¼ÓÔØͼ±ê¡£ÕâÑù¼ÓÔØ¿ÉÒÔÔÚ±êÌâÀ¸ÏÔʾ³öÀ´¡£
        RegisterClass(&WndClass);

        hwnd = CreateWindow(Name,Name,WS_OVERLAPPEDWINDOW&~WS_MAXIMIZEBOX&~WS_THICKFRAME/*WS_THICKFRAME¿Éµ÷´óСµÄ*/,  /*& ~ È¥µôÁË×î´ó»¯Ïî¡£*/
        400,300,400,200,NULL,NULL,hInst,NULL);
                HwndTxt = CreateWindow   (   
                  "edit",   
                  Txt,   
                  WS_CHILD|WS_VISIBLE|WS_BORDER|BS_TEXT,   
                  10,  10,   100,22,   
                  hwnd,   
                  (HMENU)   5,   
                  hInst,   
                  NULL   
                  );   
  

        DragAcceptFiles(hwnd,TRUE);//°ÑÎļþÍÏקÊôÐÔ´ò¿ª      
        ShowWindow(hwnd,nCmdShow);
        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)  
{
        
        int wmId, wmEvent;
        PAINTSTRUCT ps;
        HDC hdc,hdc1;

        switch (Message)
        {
                case WM_COMMAND:
                break;

                case WM_DROPFILES:
                                        {          //µ±ÎļþÍϽøÀ´Ê±
                        TCHAR szBuf[ MAX_PATH ]={0};
                        DragQueryFile((HDROP)wParam, 0, szBuf, MAX_PATH-1);  //Èç¹û¶à¸öÎļþ±»ÍÏקµÄÇé¿öֻȡ×îºóÒ»¸öÎÄ            
                        DragFinish((HDROP)wParam);
                                               
                        GetWindowText(HwndTxt,Txt,sizeof(Txt));

                        MessageBox(0,Txt,NULL,MB_OK);
                        MessageBox(hwnd, Txt,("EDIT"), MB_ICONINFORMATION);
                                                MessageBox(hwnd, szBuf,("¸ñʽ»¯³É¹¦£¡"), MB_ICONINFORMATION);
                }
                break;
                case WM_PAINT:
                hdc = BeginPaint(hwnd, &ps);
                TextOut(hdc, 10,40, ("enter password  and flag the file in!!!!"),lstrlen(("enter password  and flag the file in!!!!")));
                            
                                HDC hdc1;

                break;
                case WM_DESTROY:
                PostQuitMessage(0);
                break;

                default:
                return DefWindowProc(hwnd, Message, wParam, lParam);
        }
        return 0;
}
2009-5-9 16:39
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
..............
case WM_PAINT:
GetWindowText(HwndTxt,Txt,sizeof(Txt));
HDC hdc1;
..........................
放在消息循环中也是:error C2065: 'HwndTxt' : undeclared identifier
未定义。。。
2009-5-9 16:46
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
把 HWND HwndTxt; 放到 WinMain 前面变成全局变量就行了。

不然你在 WinMain里面定义的变量怎么能被WinProc里面的代码访问到?
2009-5-9 17:02
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
已解决。WINAPI WinMain放在循环中就可以了。

可是为什么WndProc过程函数中说句柄未定义呢???


WINAPI WinMain(){
.......

while(GetMessage(&Msg,NULL,0,0))
        {
                            GetWindowText(HwndTxt,Txt,sizeof(Txt));
                TranslateMessage(&Msg);
                DispatchMessage(&Msg);              
        }
        return Msg.wParam;
..........
}
2009-5-9 17:03
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
啊,正解。
怎么糊涂到这里了。。
多谢各位热心观众。
2009-5-9 17:04
0
游客
登录 | 注册 方可回帖
返回
//