當前位置:首頁 » 編程語言 » c語言對話框

c語言對話框

發布時間: 2024-10-22 04:11:43

c語言如何注釋

直接在該行需要注釋的地方加上"//"即可。

可以使用/*和*/分隔符來標注一行內的注釋,也可以標注多行的注釋。例如,在下列的函數原型中,省略號的意思是 open() 函數有第三個參數,它是可選參數。

注釋解釋了這個可選參數的用法:

int open( const char *name, int mode, … /* int permissions */ );

代碼具有較好的可移植性

C語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植,這就意味著,對於一台計算機編寫的C程序可以在另一台計算機上輕松地運行,從而極大的減少了程序移植的工作強度。

以上內容參考:網路-C語言

② 如何編寫C語言圖形程序

一、打開C程序的方法

方法1.在Turbo C for Windows 集成實驗與學習環境中,依次用滑鼠單擊「文件/打開」菜單(用滑鼠單擊「工具欄」中的「打開」按鈕,打開「打開」對話框,選者你要打開的文件,然後單擊「打開」即可。
圖 1 打開文件

方法2 在Turbo C for Windows 集成實驗與學習環境中的「我的程序」下用滑鼠雙擊你要打開的C程序即可(此處列出最近使用的8個文件)
圖 2 在「我的程序」中打開程序

方法3在Turbo C for Windows 集成實驗與學習環境中,依次用滑鼠單擊「文件/我的程序」菜單,打開「我的程序」對話框,選者你要打開的文件,然後單擊「打開」即可

圖 3

方法 4 在「我的電腦」中打開C程序。在我的電腦」中找到你的程序所在的文件夾,用滑鼠雙擊你要打開圖標中帶「C」的程序即可。
在「我的電腦」中打開C程序

二、新建C程序的方法

注意:C語言的初學者往往在一個C程序文件中輸入幾個C程序,這是錯誤的。一個C程序只能保存在一個文件中。輸入第二程序時必須再新建一個文件來輸入保存。

方法1 Turbo C for Windows 集成實驗與學習環境中,依次用滑鼠單擊「文件/新建」菜單,即可新建一個空白C文件。

③ 如何用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語言tabcontrol控制項怎麼寫

1、首先創建一個MFC對話框框架,在對話框資源上從工具箱中添加上一個Tab Control 控制項,根據需要修改一下屬性,然後右擊控制項,為這個控制項添加一個變數,
將此控制項跟一個CTabCtrl類變數綁定在一起,這里設為m_tabctrl

2、創建兩個新的對話框資源,其屬性作如下修改:
Border:none //邊界為空,這樣它就沒了標題欄
Style :Child // 這樣這個模板就可以當作另一個窗口的子窗口了。
其它如果沒有必要,就不用改了。
在上面加一些控制項什麼的,具體操作跟普通對話框沒有區別。
完成後從這兩個對話框模板生成兩個新的對話框類。

3、在主對話框.h文件中加入新對話框的頭文件,並為新添加進來的兩個類增加兩個變數:
如:
CTabCtrl m_tabctrl;

CDlgTab1 m_dlgtab1;
CDlgTab2 m_dlgtab2;
4、在主對話框的OnInitDialog()函數中添加如下類似的代碼:
CRect r; //CRect包含用於定義矩形的左上角和右下角點的成員變數

m_tabctrl.GetClientRect(&r);

TCITEM item1;

TCITEM item2;

item1.mask = TCIF_TEXT;

item1.pszText = _T("第一頁");

m_tabctrl.InsertItem(1,&item1);

item2.mask = TCIF_TEXT;

item2.pszText = _T("第二頁");

m_tabctrl.InsertItem(2,&item2);

m_dlgtab1.Create (IDD_DLGTAB1,&m_tabctrl);

m_dlgtab2.Create (IDD_DLGTAB2,&m_tabctrl);

m_dlgtab1.SetWindowPos(NULL,10,30,r.right - 20,r.bottom - 40,SWP_SHOWWINDOW);

m_dlgtab2.SetWindowPos(NULL,10,30,r.right - 20,r.bottom - 40,SWP_HIDEWINDOW);

m_tabctrl.SetCurSel(0);
解釋如下:
兩個InsertItem函數的調用是為了給標簽控制項增加兩個標簽頁面,文本是標題。
SetWindowPos()函數設置這兩個對話框在Z順序中的位置,顯示或隱藏狀態。

5、在主對話中為標簽控制項添加一個標簽選擇改變(TCN_SELCHANGE)的控制項通知消息,以便在用戶選擇標簽時通知主對話框。在主對話框的編輯界面右擊標簽控制項
,選擇添加一個事件可以完成這個操作。
在事件處理中添加如下代碼,如下例:
void CtabdialogDlg::OnSelchangeTimingtab(NMHDR *pNMHDR, LRESULT *pResult)

{

CRect r;

m_tabctrl.GetClientRect (&r);

switch(m_tabctrl.GetCurSel())

{

case 0:

m_mm1.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_SHOWWINDOW);

m_mm2.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW );

break;

case 1:

m_mm1.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW);

m_mm2.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_SHOWWINDOW );

break;

}

*pResult = 0;

}

要想知道用戶選擇那個標簽頁,要通過m_tabctrl.GetCurSel() 函數。為了不使顯示的子對話框覆蓋標簽控制項的顯示,所以要獲得標簽控制項的尺寸然後設置各頁面的尺寸。

⑤ C語言(VC++ 6.0 )生成的exe程序怎麼樣讓它有圖標

首先准備好自己應用程序的圖標,如果沒有也沒關系,自己在VC里畫一個就是。

步驟如下:

菜單:Insert-->Resource,打開插入資源對話框,在下面選擇Icon,之後,你可以點New新建一個圖標,也可以點Import插入一個,不管你是新建的還是插入的,你都可以對圖標進行編輯。

編輯好圖標之後,點保存,一般情況下會彈出另存為對話框,把資源文件命名為*.rc,*是你自己的名字。之後,右鍵點擊你的工程,或者SourceFiles文件夾,選擇AddfilestoFolder...,找到你剛才保存的.rc文件,選擇。保存工程,build一下,你應用程序的圖標就換了。

下圖是我剛才操作的步驟,可能有些看不清,有問題再追問吧。

熱點內容
編程腦子疼 發布:2024-11-24 02:31:23 瀏覽:169
c語言狀態機 發布:2024-11-24 02:26:56 瀏覽:281
用友加密狗破解 發布:2024-11-24 02:23:16 瀏覽:707
鴻蒙系統如何變回安卓桌面 發布:2024-11-24 02:18:26 瀏覽:412
c語言填充 發布:2024-11-24 02:10:48 瀏覽:822
命名空間存儲 發布:2024-11-24 02:10:45 瀏覽:472
java重載與重寫 發布:2024-11-24 01:59:05 瀏覽:699
通緝令2ftp 發布:2024-11-24 01:59:04 瀏覽:295
android賽車游戲 發布:2024-11-24 01:58:18 瀏覽:105
女神聯盟賬號密碼哪裡找 發布:2024-11-24 01:58:12 瀏覽:479