當前位置:首頁 » 編程語言 » c語言輸入窗口

c語言輸入窗口

發布時間: 2023-02-04 11:14:05

A. 怎樣在c語言中使用窗口

用windows API可以實現。如果想要深入學習的話,推薦你看一下《windows程序設計》這本書,這本書就是介紹如何用C語言編寫windows界面程序的。但這本書現在已經不出版了,可以下本電子檔看看。

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

C. C語言彈出輸入框

在類向導中點擊member
variables選項卡,在control
ids:中選擇你的編輯控制項雙擊,再彈出的對話框輸入你的變數名,如m_edit,一路按ok。
添加一個按鈕控制項,雙擊,點ok,
在游標處輸入
m_edit="hello
world"
updatedata(0);
可以收工了,
滿意請點擊選為滿意答案,謝謝!

D. c語言的輸入框是什麼東東

首先,要知道什麼是控制台?什麼是輸入框?
控制台就是我們通常意義上講的DOS界面,是純粹的用命令(程序名稱)加參數來執行的模式。運行界面一般是沒有什麼滑鼠可點擊的。然而也不是說就完全沒有互動式的界面。比如Ghost程序就運行在dos界面下還是有輸入框界面的,也可以用滑鼠來點擊。由此發展下來的可視化的程序界面(好的互動式操作模式)其原型就是dos界面下的這些有輸入框之類的程序。
所以說,輸入框就是程序中的一個對象。
你要在控制台下進行編程,要求有輸入框和其他的控制項,那隻能是找類似的開發包了。

E. c語言,輸入時彈出窗口說出錯

是實參和形參的問題,getinfo()函數中輸入的值沒有傳回到主函數中,建議看看形參和實參的關系!這么寫肯定是不行的,出的錯誤就是:定義了一個結構體變數但是沒有進行初始化!用return語句或者指針將形參的值返回到主函數中!

F. c語言窗口程序,帶可輸入的文本框

#include<stdio.h>
#include<windows.h>
intmain()
{
charstr[99];
gets(str);
MessageBox(0,str,"對話框",MB_OK);
return0;
}

G. c語言scanf輸入了看不見運行的窗口是什麼意思

問題:c語言scanf輸入了看不見運行的窗口是什麼意思
回答:c語言scanf輸入了看不見運行的窗口意思是c語言scanf輸入的過程中出現了一個或者幾個錯誤,最後導致c語言程序運行出現問題,所以看不見運行窗口。
分析:這種情況下需要檢查c語言scanf輸入,找到錯誤並修訂才可以。

H. 如何用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);

}

I. 誰能教我 怎麼用C語言編寫 一個窗口 求源代碼 加上注釋 謝謝

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

intmain()
{
printf("輸入一個字元,就會出現窗口");
getch();
MessageBox(NULL,"這就是你要的窗口!這就是你要的窗口! 這就是你要的窗口!這就是你要的窗口! 這就是你要的窗口!這就是你要的窗口!","hahah",MB_ICONERROR|MB_YESNO);
return0;
}

熱點內容
php的點餐系統源碼 發布:2024-11-01 20:13:53 瀏覽:714
拜占庭演算法 發布:2024-11-01 20:10:31 瀏覽:357
xcode編譯參數 發布:2024-11-01 20:00:04 瀏覽:665
蘋果5怎麼設置密碼鎖屏 發布:2024-11-01 19:54:55 瀏覽:124
寶塔上傳文件夾 發布:2024-11-01 19:39:50 瀏覽:257
java雲編譯器 發布:2024-11-01 19:34:24 瀏覽:385
免費源碼分享網 發布:2024-11-01 19:29:19 瀏覽:855
硬碟8mb緩存 發布:2024-11-01 19:20:02 瀏覽:192
抖音默認的青少年密碼是多少 發布:2024-11-01 19:18:36 瀏覽:906
電腦伺服器名字在哪裡找 發布:2024-11-01 19:13:27 瀏覽:2