gpt4 book ai didi

c - 我应该如何使用 windows.h 将字符串输出到 c 中的文本框?

转载 作者:行者123 更新时间:2023-11-30 16:35:49 25 4
gpt4 key购买 nike

我正在用 c 语言编写一个程序,它使用 gui 来帮助完成任务。该程序应该将输入的每个字符值增加键中的数量。但是,我遇到了问题,我不知道如何正确调试它,因为我无法在代码的某些点真正将文本输出到屏幕。我的问题似乎是我不太确定如何使用 windows.h 将文本输出到文本框。有谁能解答一下吗?

编辑:我发现问题是事件开关没有在 WM_COMMAND 上激活。由于我对 windows.h 缺乏了解,我无法弄清楚按钮或开关究竟出了什么问题。有什么猜测吗?

#include <windows.h>

int inRange(int min, int max, int val) {
if (val >= min) {
if (val <= max) {
return 0;
}
else {
return 1;
}
}
else {
return -1;
}
}

int cypher(int x, int y) {
if (!(inRange('A','Z',x) == 0)) {
if (!(inRange('a','z',x) == 0)) {
return x;
}
}
int dec;
int a = x;
int b = y;
if (inRange('A','Z',x) == 0) {
dec = 0;
}
else {
dec = 1;
}
a = b + a;
hyperloop:
if (inRange('A','Z',a) == -1) {
a = a + 26;
}
else if (inRange('A','Z', a) == 1) {
if (inRange('a','z', a) == -1) {
if (dec == 0) {
a = a - 26;
}
else {
a = a + 26;
}
}
else if (inRange('a','z', a) == 1) {
a = a - 26;
}
}
if (!(inRange('A','Z',a) == 0)) {
if (!(inRange('a','z',a))== 0) {
goto hyperloop;
}
}
return a;
}

int strtoint(char integer[7]) {
int count;
int counter;
int countval;
int polarity;
int res = 0;
int raw[7] = {0,0,0,0,0,0,0};
if (integer[0] == '-') {
polarity = -1;
countval = 1;
}
else {
polarity = 1;
countval = 0;
}
raw[0] = polarity;
for (count = countval; count <= 6; count = count + 1) {
if (integer[count] == 0) {
break;
}
for (counter = 1; counter <= 6; counter = counter + 1) {
raw[counter] = raw[counter] * 10;
}
raw[count - countval + 1] = integer[count] - '0';
}
for (count = 1; count <= 6; count = count + 1) {
res = res + raw[count];
}
res = res * polarity;
return res;

}

HWND maintext, button, cypherbox, keybox, outbox;
char raw[100], clean[100];
char keyraw[7];
int cyphercontent, keycontent;
char pointers[5];
int devoid;
int key;
int count;
char test[] = {'T','e','s','t','\0'};

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM
lParam) {

switch(Message) {

/* Upon destruction, tell the main thread to stop */
case WM_CREATE: {
maintext = CreateWindow("STATIC",
"Input a cypher and a key (up to 100 characters cypher)\n",
WS_VISIBLE | WS_CHILD | WS_BORDER,
20, 20, 960, 200,
hwnd,
NULL,
NULL,
NULL);

button = CreateWindow("BUTTON",
"OK",
WS_VISIBLE | WS_CHILD | WS_BORDER,
20,
85,
25,
18,
maintext,
(HMENU) 1,
NULL,
NULL);

cypherbox = CreateWindow("EDIT",
"text here",
WS_BORDER | WS_CHILD | WS_VISIBLE,
20,
25,
920,
20,
maintext,
NULL,
NULL,
NULL);


keybox = CreateWindow("EDIT",
"keyhere",
WS_BORDER | WS_CHILD | WS_VISIBLE,
20,
45,
57,
20,
maintext,
NULL,
NULL,
NULL);

outbox = CreateWindow("STATIC",
clean,
WS_BORDER | WS_CHILD | WS_VISIBLE,
20,
105,
920,
20,
maintext,
NULL,
NULL,
NULL);

break;
}
case WM_COMMAND: {

switch (LOWORD(wParam)) {
case 1: {
//clear raw and clean
for (count = 0; count <100; count = count + 1) {
raw[count] = 0;
clean[count] = 0;
}
for (count = 0; count < 6; count = count + 1) {
keyraw[count] = 0;
}
//things that I didn't need to do but did anyways
cyphercontent = 0;
keycontent = 0;
pointers[0] = &raw[0];
pointers[1] = &keyraw[0];
//obtain text from both boxes
cyphercontent = GetWindowText(
cypherbox,
pointers[0],
100
);
keycontent = GetWindowText(
keybox,
pointers[1],
7
);
//convert the string input to number output
key = strtoint(keyraw);
for (count = 0; count <= 99; count = count + 1) {
clean[count] = cypher(raw[count],key);
}

break;
}
}

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

default:
return DefWindowProc(hwnd, Message, wParam, lParam);
}
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
WNDCLASSEX wc; /* A properties struct of our window */
HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
MSG msg; /* A temporary location for all messages */

/* zero out the struct and set the stuff we want to modify */
memset(&wc,0,sizeof(wc));
wc.cbSize = sizeof(WNDCLASSEX);
wc.lpfnWndProc = WndProc; /* This is where we will send messages to */
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName = "WindowClass";
wc.hIcon = LoadIcon(NULL, "cypher_text.ico");
wc.hIconSm = LoadIcon(NULL, "cypher_text.ico");

if(!RegisterClassEx(&wc)) {
MessageBox(NULL, "Window Registration
Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return 0;
}

hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE,
"WindowClass",
"Cypher.exe",
WS_VISIBLE|WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, /* x */
CW_USEDEFAULT, /* y */
1020, /* width */
280, /* height */
NULL,
NULL,
hInstance,
NULL);

if(hwnd == NULL) {
MessageBox(NULL, "Window Creation
Failed!","Error!",MB_ICONEXCLAMATION|MB_OK);
return 0;
}

while(GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

最佳答案

您可以使用SetWindowText设置文本框中的文本。示例:

SetWindowText(outbox, "Hello World!");

关于c - 我应该如何使用 windows.h 将字符串输出到 c 中的文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48737450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com