當前位置:首頁 » 編程語言 » 電腦c語言程序怎麼調出輸入窗口
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

電腦c語言程序怎麼調出輸入窗口

發布時間: 2022-09-14 21:31:14

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);//樓主想要的動作
}