vc++ win32项目添加文本编辑框、静态文本、按钮、Richedit等控件

窗口大小

[cpp]  view plain  copy
  1. hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,  
  2.       CW_USEDEFAULT, 0, 680, 640, NULL, NULL, hInstance, NULL);  


在资源文件Resource.h中添加控件ID

[cpp]  view plain  copy
  1. #define IDB_BUTTON_LOGIN        111  
  2. #define IDB_BUTTON_RESET        113  
  3. #define IDB_BUTTON_SEND         114  
  4. #define IDB_BUTTON_UPDATE       115  


[cpp]  view plain  copy
  1. //声明变量  
  2. HWND Login_Button;          //登录按钮  
  3. HWND Reset_Button;          //登录信息重置  
  4. HWND Update_Button;     //发送信息重置  
  5. HWND Send_Button;           //发送信息  
  6.   
  7. HWND edit_ip;               //输入id编辑框  
  8. HWND edit_port;             //输入端口号编辑框  
  9. HWND edit_name;             //输入昵称编辑框  
  10.   
  11. static HWND hWinRich_recv;  //接收文本框  
  12. static HWND hWinRich_send;  //发送文本框  
  13. static HWND hWinRich;       //即将发送文本框  

[cpp]  view plain  copy
  1. //加载创建Richedit控件的动态库  
  2. HINSTANCE       hRich;  
  3. hRich = LoadLibrary(TEXT("RICHED20.dll"));    //注意大小写;  


在消息回调函数LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)中创建添加控件


[cpp]  view plain  copy
  1. //  
  2. //  函数:  WndProc(HWND, UINT, WPARAM, LPARAM)  
  3. //  
  4. //  目的:    处理主窗口的消息。  
  5. //  
  6. //  WM_COMMAND  - 处理应用程序菜单  
  7. //  WM_PAINT    - 绘制主窗口  
  8. //  WM_DESTROY  - 发送退出消息并返回  
  9. //  
  10. //  
  11. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)  
  12. {  
  13.     int wmId, wmEvent;  
  14.     PAINTSTRUCT ps;  
  15.     HDC hdc;  
  16.   
  17.     switch (message)  
  18.     {  
  19. //在菜单响应中添加点击按钮响应函数  
  20.     case WM_COMMAND:  
  21.         wmId    = LOWORD(wParam);  
  22.         wmEvent = HIWORD(wParam);  
  23.         // 分析菜单选择:   
  24.         switch (wmId)  
  25.         {  
  26.         case IDM_ABOUT:  
  27.             DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);  
  28.             break;  
  29.   
  30.         case IDM_EXIT:  
  31.             DestroyWindow(hWnd);  
  32.             break;  
  33.         //登录按钮  
  34.         case IDB_BUTTON_LOGIN:  
  35.         {  
  36.         //添加响应函数  
  37.         }  
  38.             break;  
  39.         //断开连接按钮  
  40.         case IDB_BUTTON_RESET:  
  41.         {  
  42. //添加响应函数  
  43.         }  
  44.               
  45.             break;  
  46.   
  47.         //发送信息按钮  
  48.         case IDB_BUTTON_SEND:  
  49.         {  
  50. //添加响应函数  
  51.         }  
  52.             break;  
  53.         //更改昵称  
  54.         case IDB_BUTTON_UPDATE:  
  55. {  
  56. //添加响应函数  
  57.   
  58. }  
  59.             break;  
  60.         default:  
  61.             return DefWindowProc(hWnd, message, wParam, lParam);  
  62.         }  
  63.         break;  
  64.     case WM_PAINT:  
  65.         hdc = BeginPaint(hWnd, &ps);  
  66.         // TODO:  在此添加任意绘图代码...  
  67.         EndPaint(hWnd, &ps);  
  68.         break;  
  69. //创建控件  
  70.     case WM_CREATE:  
  71.     {  
  72.         Login_Button = CreateWindow(TEXT("button"),//必须为:button   
  73.             TEXT("连接"),//按钮上显示的字符      
  74.             WS_CHILD | WS_VISIBLE,  
  75.             480, 20, 75, 20,            //x,y,宽,高  
  76.             hWnd, (HMENU)IDB_BUTTON_LOGIN,//添加按钮ID  
  77.             ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  78.           
  79.         Reset_Button = CreateWindow(TEXT("button"),//必须为:button      
  80.             TEXT("断开"),//按钮上显示的字符      
  81.             WS_CHILD | WS_VISIBLE,  
  82.             565, 20, 75, 20,            //x,y,宽,高  
  83.             hWnd, (HMENU)IDB_BUTTON_RESET,//绑定按钮ID  
  84.             ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  85.   
  86.         Send_Button = CreateWindow(TEXT("button"),//必须为:button      
  87.             TEXT("发送"),//按钮上显示的字符      
  88.             WS_CHILD | WS_VISIBLE,  
  89.             570, 540, 75, 30,           //x,y,宽,高  
  90.             hWnd, (HMENU)IDB_BUTTON_SEND,//绑定按钮ID  
  91.             ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  92.   
  93.         Update_Button = CreateWindow(TEXT("button"),//必须为:button      
  94.             TEXT("更改"),//按钮上显示的字符      
  95.             WS_CHILD | WS_VISIBLE,  
  96.             160, 540, 50, 30,           //x,y,宽,高  
  97.             hWnd, (HMENU)IDB_BUTTON_UPDATE,//绑定按钮ID  
  98.             ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  99.         //添加服务器ip的编辑框  
  100.         edit_ip = CreateWindow("edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,  
  101.             120, 20, 120, 20, hWnd, NULL, NULL, NULL);  
  102.   
  103.         //添加端口号的编辑框  
  104.         edit_port = CreateWindow("edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,  
  105.             325, 20, 120, 20, hWnd, NULL, NULL, NULL);  
  106.   
  107.         //添加昵称的编辑框  
  108.         edit_name = CreateWindow("edit", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,  
  109.             70, 540, 85, 30, hWnd, NULL, NULL, NULL);  
  110.   
  111.         HWND hStatic1;  
  112.         hStatic1 = CreateWindow("static", TEXT("目的地址IP:"), WS_CHILD | WS_VISIBLE | SS_RIGHT, 20, 20, 90, 20, hWnd,  
  113.             (HMENU)1,((LPCREATESTRUCT)lParam)->hInstance,NULL);  
  114.         HWND hStatic2;  
  115.         hStatic2 = CreateWindow("static", TEXT("昵称:"), WS_CHILD | WS_VISIBLE | SS_RIGHT, 20, 540, 45, 30, hWnd,  
  116.             (HMENU)2, ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  117.         HWND hStatic3;  
  118.         hStatic3 = CreateWindow("static", TEXT("端口:"), WS_CHILD | WS_VISIBLE | SS_RIGHT, 250, 20, 65, 20, hWnd,  
  119.             (HMENU)3, ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  120.           
  121.   
  122.         //RichEdit控件的创建;   
  123.         hWinRich_recv = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("RichEdit20A"), NULL,  
  124.             WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_NOHIDESEL,  
  125.             0, 0, 0, 0, hWnd, 0, ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  126.           
  127.         //发送的消息框  
  128.         hWinRich = CreateWindowEx(WS_EX_CLIENTEDGE, TEXT("RichEdit20A"), NULL,  
  129.             WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_NOHIDESEL,  
  130.             0, 0, 0, 0, hWnd, 0, ((LPCREATESTRUCT)lParam)->hInstance, NULL);  
  131.   
  132.   
  133.     }  
  134.         break;  
  135.     case WM_SIZE:  
  136. //添加richedit控件时必须添加这个语句,否则不能显示该控件  
  137.         MoveWindow(hWinRich_recv, 20, 55, 625, 470, TRUE);  
  138.         MoveWindow(hWinRich, 220, 540, 340, 30, TRUE);  
  139.         break;  
  140.       
  141.     case WM_DESTROY:  
  142.         PostQuitMessage(0);  
  143.         break;  
  144.       
  145.     default:  
  146.         return DefWindowProc(hWnd, message, wParam, lParam);  
  147.     }  
  148.     return 0;  
  149. }