在文本框和程序源代码之间传递信息

时间:2015-03-29 23:13:21

标签: c textbox

所以我自己有一个包含两个文件的项目,AT.c和main.c(我使用DEV-C ++)。 AT.c包含我需要的所有计算内容,使用I / O命令行并且自身工作相对较好。但是,由于我需要一个用于该程序的GUI,我还得到了main.c文件,它基本上创建了一个带有文本框的窗口,供我输入数字。

无论如何,现在我有点卡住,因为我不知道如何从这些文本框中读取AT.c而不是使用scanf方法。我想我应该在两个代码之间做一些声明或链接,但我还没有找到任何可以帮助的东西。

代码是main.c是在Dev-C ++中创建新的Windows应用程序项目时的起始代码。我只改变了LRESULTCALLBACK部分。

#define ID_BUTTON 1
#define ID_TEXTBOX 2

static HWND hwndA;
static HWND hwndB;
/*  This function is called by the Windows function DispatchMessage()  */


LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)                  /* handle the messages */
{
    case WM_CREATE:{
         CreateWindow(TEXT("Button"), TEXT("Generate"),
             WS_CHILD | WS_VISIBLE,
             10, 160, 80, 20,
             hwnd, (HMENU) ID_BUTTON, NULL, NULL
             );
         hwndA = CreateWindow(TEXT("EDIT"), TEXT(""),
             WS_VISIBLE | WS_CHILD | WS_BORDER,
             190, 130, 70, 15,
             hwnd, (HMENU) ID_TEXTBOX, NULL, NULL
             );    
         hwndB = CreateWindow(TEXT("EDIT"), TEXT(""),
             WS_VISIBLE | WS_CHILD | WS_BORDER,
             260, 130, 70, 15,
             hwnd, (HMENU) ID_TEXTBOX, NULL, NULL
             );
         break;
         }
    case WM_COMMAND:{

         if (LOWORD(wParam) == ID_BUTTON) {
            char wot[256];

            GetWindowText(hwndA, wot, 4);
            SetWindowText(hwndB, wot);
            }
         }

         break;
         }
    case WM_DESTROY:
        PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
        break;
    default:                      /* for messages that we don't deal with */
        return DefWindowProc (hwnd, message, wParam, lParam);
}

return 0;
}

AT.c只是一个很大但很简单的计算程序。 像

#include<stdio.h>
#include<stdlib.h>
#include<math.h> 

int a, b, c;

main(){
   scanf("%d", &a);
   scanf("%d", &b);
   printf("\n%d", a+b);
   system("pause");
}

只是一堆ifs和循环。

1 个答案:

答案 0 :(得分:0)

我假设您已将AT.CMAIN.C添加到项目中。您可以轻松地进行沟通,将它们写在不同的文件中并不重要,除非我没有理解这个问题。

在file1.C中:

#include "headers.h"
//..
char Input_Text[256]; 
void Function_in_file1(const char *buf)
{
   //..
}
//..

在file2.C中:

#include "headers.h"
//..
extern char Input_Text[256]; 
void Function_in_file1(const char *buf);//let the compiler know this is a valid function and you wrote it somewhere else
//...
case WM_COMMAND:{
    if (LOWORD(wParam) == ID_BUTTON) {
        char temp[50];
        GetWindowText(hwndA, temp, 4);
        Function_in_file1(temp); //call Function_in_file1() in file1.C
        //or
        GetWindowText(hwndA, Input_Text, 4);//Input_Text is available in file1.C
    }
}