因為linux圖形界面沒有一個統一的標准,所以想找一個輕量級的系統介面是不太可能的
可以用Xorg的介面,或者gtk的介面,這樣在使用Xserver系統下是可以的,比如Ubuntu,centos一類的
或者更復雜一些的,用qt,或者用wxwidget的介面,這個通用性強,可以跨平台,但要使用對應的庫
② 怎麼實現當點擊一個按鈕彈出一個文本框
你已經將mfc生成為對話框程序了
怎麼會彈出單文檔界面
建立mfc工程時,類型只能是
單文檔、多文檔、對話框之一
③ C語言彈出輸入框
在類向導中點擊member
variables選項卡,在control
ids:中選擇你的編輯控制項雙擊,再彈出的對話框輸入你的變數名,如m_edit,一路按ok。
添加一個按鈕控制項,雙擊,點ok,
在游標處輸入
m_edit="hello
world"
updatedata(0);
可以收工了,
滿意請點擊選為滿意答案,謝謝!
④ 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++編寫程序時彈出文本框輸入數據
首先必須基於窗口應用程序,也就是mfc,最簡單的就是對話框程序了。彈出文本框輸入數據,對新手來說還是有點復雜。個人建議,新手做控制台足夠了,mfc暫時沒那麼快明白的。⑥ 如何用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#彈出對話框
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.textBox1.Text != "")
{
if (Convert.ToInt32(this.textBox1.Text) < 0 || Convert.ToInt32(this.textBox1.Text) > 100)
{
MessageBox.Show("有效范圍0-100", "提示信息");
this.textBox1.Text = "";
}
}
}
我試了一下,如果你填寫的是小數、或者負數、或者為字元串,運行都會報錯,首先得判斷TextBox1中填寫的內容。不知道lz對此有沒有具體要求。暫時就是這樣就可以滿足基本要求。
⑧ C#中怎麼彈出密碼輸入提示框
在C#中,進行windows窗體應用程序編程的時候,經常需要彈出輸入框,輸入密碼,輸入文本之類的。然而,C#中沒有直接彈出輸入框的語句,MessageBox只能顯示一段消息而不能輸入。我們需要調用Microsoft.VisualBasic.Dll,使用VB中的inputbox,實現彈出輸入框的功能。
http://jingyan..com/article/1876c8529854fe890b1376f2.html