Ⅰ c语言弹出输入框
在类向导中点击member
variables选项卡,在control
ids:中选择你的编辑控件双击,再弹出的对话框输入你的变量名,如m_edit,一路按ok。
添加一个按钮控件,双击,点ok,
在光标处输入
m_edit="hello
world"
updatedata(0);
可以收工了,
满意请点击选为满意答案,谢谢!
Ⅱ 如何用c语言在控制台弹出一个输入对话框
#include <tchar.h>
#include <windows.h>
HINSTANCE _HInstance; // 应用程序句柄
TCHAR _Title[] = _T("简单文本框"); // 定义窗口的标题
TCHAR _WindowClass[] = _T("MySimpleTextBoxApp");// 主窗口类名
ATOM _RegisterClass(); // 注册主窗口类
HWND _CreateWindow(int nCmdShow); // 创建主窗口
LRESULT CALLBACK _WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // 主窗口消息处理函数
TCHAR _TextBoxClass[] = _T("MySimpleTextBox"); // 文本框的类名
ATOM _RegisterTextBoxClass(); // 注册文本框的类
HWND _CreateTextBoxWindow(HWND hParentWnd); // 创建文本框
LRESULT CALLBACK _TextBoxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); // 文本框窗口消息处理函数
void _DrawText(HDC hDC); // 绘制文本
void _SetCaretPos(HWND hWnd); // 设置光标位置
void _UpdateWindow(HWND hWnd); // 更新窗口
// 一些常量定义
#define MAINWINDOW_WIDTH 400 // 主窗口宽度
#define MAINWINDOW_HEIGHT 200 // 主窗口高度
#define TEXTBOX_WIDTH 300 // 文本框宽度
#define TEXTBOX_HEIGHT 20 // 文本框高度
#define TEXTBOX_MAXLENGTH 1024 // 文本框中文本的最大长度
TCHAR _String[TEXTBOX_MAXLENGTH + 1] = _T(""); // 文本
int _StringPosition = ::_tcslen(_String); // 光标插入点所在的位置
int APIENTRY _tWinMain(HINSTANCE hInstance, // 当前的应用程序句柄
HINSTANCE hPrevInstance, // 前一个应用程序实例的句柄(在Win32上,始终为NULL)
LPTSTR lpCmdLine, // 命令行参数
int nCmdShow // 窗口的显示样式
)
{
_HInstance = hInstance;
_RegisterClass(); // 注册窗口类
if(_CreateWindow(nCmdShow) == NULL) // 创建窗口
return FALSE;
MSG msg;
while (::GetMessage(&msg, NULL, 0, 0)) // 从消息队列中获取消息
{
::TranslateMessage(&msg); // 转译一些特殊的消息
::DispatchMessage(&msg); // 执行消息处理
}
return (int)msg.wParam;
}
// 注册应用程序窗口类
ATOM _RegisterClass()
{
WNDCLASSEX wc;
::ZeroMemory(&wc, sizeof(wc)); // 作为一步清空,是为了让未赋值的字段的默认值为(或NULL)
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW; // 指定当窗口横向和纵向的尺寸发生变化时都会重绘窗口
wc.hInstance = _HInstance;
wc.hbrBackground = (HBRUSH)( COLOR_APPWORKSPACE + 1); // 指定主窗口背景为“工作区域”系统颜色
wc.lpszClassName = _WindowClass; // 此为要注册的类名,创建窗口时要以此类名为标识符
wc.lpfnWndProc = _WndProc; // 此为处理窗口消息的函数
return ::RegisterClassEx(&wc); // 调用API函数注册窗口类
}
// 创建窗口
HWND _CreateWindow(int nCmdShow)
{
HWND hWnd = ::CreateWindow(_WindowClass, _Title, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, MAINWINDOW_WIDTH, MAINWINDOW_HEIGHT, NULL, NULL, _HInstance, NULL);
if(hWnd == NULL)
return NULL;
::ShowWindow(hWnd, nCmdShow);
::UpdateWindow(hWnd);
return hWnd;
}
// 窗口处理过程
LRESULT CALLBACK _WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND hTextBoxWnd;
switch (message)
{
case WM_CREATE: {
_RegisterTextBoxClass(); // 注册文本框的类
hTextBoxWnd = _CreateTextBoxWindow(hWnd); // 创建文本框
} break;
case WM_ACTIVATE: // 当窗口被激活时,将焦点设置在文本框上
::SetFocus(hTextBoxWnd);
break;
case WM_SETCURSOR: { // 设置光标形状
static HCURSOR hCursor = ::LoadCursor(NULL, IDC_ARROW);
::SetCursor(hCursor);
} break;
case WM_DESTROY: // 应用程序被关闭
::PostQuitMessage(0);
break;
default:
return ::DefWindowProc(hWnd, message, wParam, lParam);
}
return (LRESULT)0;
}
// 注册文本框的类
ATOM _RegisterTextBoxClass()
{
WNDCLASSEX wc;
::ZeroMemory(&wc, sizeof(wc));
wc.cbSize = sizeof(wc);
wc.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS; // 指定当窗口尺寸发生变化时重绘窗口,并且响应鼠标双击事件
wc.hInstance = _HInstance;
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); // 指定窗口背景颜色为系统颜色“窗口背景”
wc.lpszClassName = _TextBoxClass; // 指定要注册的窗口类名,创建窗口时要以此类名为标识符
wc.lpfnWndProc = _TextBoxWndProc; // 处理窗口消息的函数
return ::RegisterClassEx(&wc); // 调用API函数注册文本框窗口
}
// 创建文本框
HWND _CreateTextBoxWindow(HWND hParentWnd)
{
// 之下代码是为了让文本框显示在父窗口中央,而计算位置
RECT parentWndRect;
::GetClientRect(hParentWnd, &parentWndRect); // 获取父窗口客户区的位置
int left = (parentWndRect.right - TEXTBOX_WIDTH) / 2, top = (parentWndRect.bottom - TEXTBOX_HEIGHT) / 2;
// 创建文本框
HWND hWnd = ::CreateWindow(_TextBoxClass, NULL, WS_CHILDWINDOW | WS_VISIBLE,
left, top, TEXTBOX_WIDTH, TEXTBOX_HEIGHT,
hParentWnd, NULL, _HInstance, NULL);
return hWnd;
}
// 文本框消息的处理过程
LRESULT CALLBACK _TextBoxWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT: { // 绘制这里之所以加一对大括号,是为了让之下定义的变量局部化
static PAINTSTRUCT ps;
static RECT rect;
HDC hDC = ::BeginPaint(hWnd, &ps); // 开始绘制操作
::GetClientRect(hWnd, &rect); // 获取客户区的尺寸
::DrawEdge(hDC, &rect, EDGE_SUNKEN, BF_RECT); // 绘制边框,EDGE_SUNKEN表示绘制样式为内嵌样式,BF_RECT表示绘制矩形边框
_DrawText(hDC); // 绘制文本
::EndPaint(hWnd, &ps); // 结束绘制操作
} break;
case WM_SETFOCUS: { // 获得焦点
::CreateCaret(hWnd, (HBITMAP)NULL, 1, TEXTBOX_HEIGHT-5); // 创建光标
_SetCaretPos(hWnd); // 设置光标位置
::ShowCaret(hWnd); // 显示光标
} break;
case WM_KILLFOCUS: // 失去焦点
::HideCaret(hWnd); // 隐藏光标
::DestroyCaret(); // 销毁光标
break;
case WM_SETCURSOR: { // 设置光标形状
static HCURSOR hCursor = ::LoadCursor(NULL, IDC_IBEAM);
::SetCursor(hCursor);
} break;
case WM_CHAR: { // 字符消息
TCHAR code = (TCHAR)wParam;
int len = ::_tcslen(_String);
if(code < (TCHAR)' ' || len >= TEXTBOX_MAXLENGTH)
return 0;
::MoveMemory(_String + _StringPosition + 1, _String + _StringPosition, (len - _StringPosition + 1) * sizeof(TCHAR));
_String[_StringPosition ++] = code;
_UpdateWindow(hWnd);
_SetCaretPos(hWnd);
} break;
case WM_KEYDOWN: { // 键按下消息
TCHAR code = (TCHAR)wParam;
switch (code)
{
case VK_LEFT: // 左光标键
if(_StringPosition > 0)
_StringPosition --;
break;
case VK_RIGHT: // 右光标键
if(_StringPosition < (int)::_tcslen(_String))
_StringPosition ++;
break;
case VK_HOME: // HOME 键
_StringPosition = 0;
break;
case VK_END: // END 键
_StringPosition = ::_tcslen(_String);
break;
case VK_BACK: // 退格键
if(_StringPosition > 0)
{
::MoveMemory(_String + _StringPosition - 1, _String + _StringPosition, (::_tcslen(_String)-_StringPosition + 1) * sizeof(TCHAR));
_StringPosition --;
_UpdateWindow(hWnd);
}
break;
case VK_DELETE: { // 删除键
int len = ::_tcslen(_String);
if(_StringPosition < len)
{
::MoveMemory(_String + _StringPosition, _String + _StringPosition + 1, (::_tcslen(_String) - _StringPosition + 1) * sizeof(TCHAR));
_UpdateWindow(hWnd);
}
} break;
}
_SetCaretPos(hWnd);
} break;
case WM_LBUTTONDOWN: { // 鼠标单击,设置光标位置
int x = LOWORD(lParam);
HDC hDc = ::GetDC(hWnd);
int strLen = ::_tcslen(_String), strPos = 0;
SIZE size;
for (strPos=0; strPos<strLen; strPos++)
{
::GetTextExtentPoint(hDc, _String, strPos, &size);
if(size.cx + 4 >= x)
break;
}
_StringPosition = strPos;
::GetTextExtentPoint(hDc, _String, strPos, &size);
::SetCaretPos(size.cx + 4, 3);
::ReleaseDC(hWnd, hDc);
} break;
default:
return ::DefWindowProc(hWnd, message, wParam, lParam);
}
return (LRESULT)0;
}
// 更新窗口
void _UpdateWindow(HWND hWnd)
{
RECT rect;
::GetClientRect(hWnd, &rect);
::InvalidateRect(hWnd, &rect, TRUE);
::UpdateWindow(hWnd);
}
// 绘制文本
void _DrawText(HDC hDC)
{
int len = ::_tcslen(_String);
::TextOut(hDC, 4, 2, _String, len);
}
// 设置光标位置
void _SetCaretPos(HWND hWnd)
{
HDC hDC = ::GetDC(hWnd);
SIZE size;
::GetTextExtentPoint(hDC, _String, _StringPosition, &size);
::SetCaretPos(4 + size.cx, 3);
::ReleaseDC(hWnd, hDC);
}
Ⅲ C语言最开始要编程要打开一个窗口,那窗口怎么打开,说下过程吧!
运行软件,新建,选择要建的类型,然后就出现空白窗口,窗口可以设计样式和控件按钮,双击就是写代码的
Ⅳ C语言如何弹出提示框
直接调用系统API MessageBox()函数就可以了。
函数原形
int WINAPI MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType);
参数说明
hWnd: 消息框的拥有窗此参数口。如果为NULL,则消息框没有拥有窗口。
lpText: 消息框的内容。
lpCaption: 消息框的标题。
uType:
指定一个决定对话框的内容和行为的位标志集。此参数可以为下列标志组中标志的组合。指定下列标志中的一个来显示消息框中的按钮以及图标。
MB_OK 默认值。有一个确认按钮在里面。
MB_YESNO 有是和否在里面。
MB_ABORTRETRYIGNORE 有Abort(放弃),Retry(重试)和Ignore(跳过)
MB_YESNOCANCEL 消息框含有三个按钮:Yes,No和Cancel
MB_RETRYCANCEL 有Retry(重试)和Cancel(取消)
MB_OKCANCEL 消息框含有两个按钮:OK和Cancel
当然还有其他标志和返回值, 具体内容参考
https://msdn.microsoft.com/en-us/library/ms645505(VS.85).aspx
最后是用系统API时需要包含头文件 windows.h
Ⅳ C语言实现命令行窗口
1、函数名: window
功 能: 定义活动文本模式窗口
用 法: void window(int left, int top, int right, int bottom);
2、例程:
#include<conio.h>
intmain(void){
window(10,10,40,11);
textcolor(BLACK);
textbackground(WHITE);
cprintf("Thisisatest ");
return0;
}
Ⅵ 我今天打开C语言编程,发现窗口显示不出来了
可以试试重启电脑,有的时候有缓存是会出现这样的情况的,还有可能是某些服务没有启动。
Ⅶ 在vc++6.0中用c语言实现弹出一个可输入的窗口 输入内容用于父窗口
先建好窗口资源,再新建一个类与之关联,假设这个类是B,父窗口的类是A
在A中有个函数Onf()用来写代码显示分窗口,
在B中定义公有变量接受输入的数据,假设这个变量是c
在A中要获得B中的c的值,用A中的成员变量d来接收,应在Onf()中写如下代码
Onf()
{
Bb;
b.DoModal();
d=b.c;
}这样就可以了,以上代码只是一种形式,灵活变通
Ⅷ 怎样在c语言中使用窗口
用windows API可以实现。如果想要深入学习的话,推荐你看一下《windows程序设计》这本书,这本书就是介绍如何用C语言编写windows界面程序的。但这本书现在已经不出版了,可以下本电子档看看。
Ⅸ 在C语言里面做登录时,如何显示成输入框的形式
您好!光标的控制可以通过SetConsoleCursorPosition来处理。
画矩形框的话需要用到GDI的函数。如果是用默认的console窗口的话应该没法处理WM_PAINT消息,也就是说只要窗口大小变化了,一开始画的东西就都没了,最好创建一个自己的窗口。
下面是一个简单的示例(把一些改变大小的菜单都移除掉了):
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
void main()
{
HWND hwnd = GetConsoleWindow();
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFO sScreenInfo;
CONSOLE_FONT_INFO sFontInfo;
COORD posStart, posNow, font;
HDC dc = GetDC(hwnd);
RECT rect;
HBRUSH brush = CreateSolidBrush(RGB(0,0,255));
char name[20], pwd[20], ch;
char szWelcome[64] = "Welcome - ";
int i;
// 初始化
DeleteMenu(GetSystemMenu(hwnd, FALSE), SC_SIZE, MF_BYCOMMAND);
DeleteMenu(GetSystemMenu(hwnd, FALSE), SC_MINIMIZE, MF_BYCOMMAND);
DeleteMenu(GetSystemMenu(hwnd, FALSE), SC_MAXIMIZE, MF_BYCOMMAND);
DrawMenuBar(hwnd);
system("cls");
SetConsoleTitle("Login");
GetConsoleScreenBufferInfo(hOut, &sScreenInfo);
posStart.X = (sScreenInfo.srWindow.Right - sScreenInfo.srWindow.Left) / 2 - 10;
posStart.Y = (sScreenInfo.srWindow.Bottom - sScreenInfo.srWindow.Top) / 2 - 1;
GetCurrentConsoleFont(hOut, FALSE, &sFontInfo);
font = GetConsoleFontSize(hOut, sFontInfo.nFont);
// 输出“账号”
SetConsoleTextAttribute(hOut, FOREGROUND_INTENSITY);
posNow.X = posStart.X;
posNow.Y = posStart.Y;
SetConsoleCursorPosition(hOut, posNow);
printf("账号:");
// 画蓝色边框
rect.left = (posNow.X+5)*font.X;
rect.top = (posNow.Y - 1)*font.Y;
rect.right = rect.left + 20*font.X;
rect.bottom = rect.top + 3*font.Y;
FrameRect(dc, &rect, brush);
// 输出“密码”
SetConsoleTextAttribute(hOut, FOREGROUND_BLUE);
posNow.X = posStart.X;
posNow.Y = posStart.Y + 4;
SetConsoleCursorPosition(hOut, posNow);
printf("密码:\n");
// 画蓝色边框
rect.left = (posNow.X+5)*font.X;
rect.top = (posNow.Y - 1)*font.Y;
rect.right = rect.left + 20*font.X;
rect.bottom = rect.top + 3*font.Y;
FrameRect(dc, &rect, brush);
// 清除DC
DeleteObject(brush);
ReleaseDC(hwnd, dc);
// 输入账号
SetConsoleTextAttribute(hOut, FOREGROUND_INTENSITY);
posNow.X = posStart.X + 6;
posNow.Y = posStart.Y;
SetConsoleCursorPosition(hOut, posNow);
scanf("%s", name);
// 输入密码
posNow.X = posStart.X + 6;
posNow.Y = posStart.Y + 4;
SetConsoleCursorPosition(hOut, posNow);
i = 0;
while ((ch = getch()) != 13)
{
printf("*");
pwd[i++] = ch;
}
// 欢迎信息
system("cls");
strcat(szWelcome, name);
SetConsoleTitle(szWelcome);
SetConsoleTextAttribute(hOut, FOREGROUND_RED);
SetConsoleCursorPosition(hOut, posStart);
printf("***********************\n");
posStart.Y += 1;
SetConsoleCursorPosition(hOut, posStart);
printf("**** WELCOME ****\n");
posStart.Y += 1;
SetConsoleCursorPosition(hOut, posStart);
printf("***********************\n");
while ((ch = getch()) != 13){}
}
Ⅹ C语言弹出输入框
用c语言写-----在wincc中,画面中做了按钮,如果按下按钮便会弹出对话框来让自己选择是否想确定刚才的选择或者可以是取消。本人不想用隐藏的按钮结合了实现,想通过c语言直接实现。。
最佳答案
用messagebox
按钮的脚本
#include"apdefap.h"
voidonlbuttondown(char*lpszpicturename,char*lpszobjectname,char*lpszpropertyname,uintnflags,intx,inty)
{
intj;
dworddwhelp1,dwhelp2;
j=messagebox(null,"您确定要启动吗?","注意!",mb_okcancel|mb_iconexclamation|mb_setforeground|mb_systemmodal);
if(j==1)
{
settagbit("zcf-start-hd",1);//楼主想要的动作
}