c窗體設計
① 用C語言編寫設計一個Windows應用程序窗口界面。
您好!
小弟建議您用 Visual C# 2008 軟體
這不是問題,這是標准模塊
屬於秒殺問題 根本不需要任何演演算法(內建)!
② c語言程序設計窗體
|建立窗口很簡單,只需呼叫CreateWindow函數即可。
HELLOWIN.C
/*------------------------------------------------------------------------
HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
(c) Charles Petzold, 1998
-----------------------------------------------------------------------*/
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASwndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuNam = NULL ;
wndclass.lpszClassName= szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow( szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT,// initial x position
CW_USEDEFAULT,// initial y position
CW_USEDEFAULT,// initial x size
CW_USEDEFAULT,// initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
case WM_CREATE:
PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
③ C語言窗口界面如何美化
首先修改背景字體顏色 :
顏色屬性由兩十六進制數字指定 -- 第背景第二個則是前景,
每個數字內可以容為以下任何值之一
0 = 黑色 8 = 灰色
1 = 藍色 9 = 淡藍色
2 = 綠色 A = 淡綠色
3 = 淺綠色 B = 淡淺綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色
④ C語言程序的窗體
可以是可以,但是如果光用C語言的特性來編寫Windows窗口程序太費勁,C不適合寫窗口程序。給你如下代碼,可以在VC中編譯成功。
/*------------------------------------------------------------
HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
(c) Charles Petzold, 1998
------------------------------------------------------------*/
#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow (szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
case WM_CREATE:
PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
##########################################
這只是在窗口中間顯示hello,windows98而已,但是代碼卻這么長,估計你也看不懂。不管是窗體,還是所有功能事件完全得自己寫,太麻煩。研究windows程序運行原理,倒可以學學也無妨。所有windows程序最後編譯後都成為這種形式,但是因為寫代碼的時候完全被面向對象包裝了起來,所以都不知道windows程序原來是這么啟動的。
⑤ 如何用C語言開發窗體應用程序。。
生產窗體可以使用CreateWindowEx函數。
函數功能:該函數創建一個具有擴展風格的層疊式窗口、彈出式窗口或子窗口,其他與CreateWindow函數相同。
函數原型:
CreateWindowEx函數創建一個層疊的,自動彈出的(pop-up)或是一個子窗口通過擴展格式。另外這個函數的作用與CreateWindow函數的作用相同。要獲得更多的關於創建窗口的信息和關於CreateWindowEx函數參數的詳細描述。參見CreateWindow
HWND CreateWindowEx(
DWOR DdwExStyle, //窗口的擴展風格
LPCTSTR lpClassName, //指向注冊類名的指針
LPCTSTR lpWindowName, //指向窗口名稱的指針
DWORD dwStyle, //窗口風格
int x, //窗口的水平位置
int y, //窗口的垂直位置
int nWidth, //窗口的寬度
int nHeight, //窗口的高度
HWND hWndParent, //父窗口的句柄
HMENU hMenu, //菜單的句柄或是子窗口的標識符
HINSTANCE hInstance, //應用程序實例的句柄
LPVOID lpParam //指向窗口的創建數據
);常式:
include<windows.h>
#include<stdio.h>
LRESULTCALLBACKWinDouProc(
HWNDhwnd,//handletowindow
UINTuMsg,//messageidentifier
WPARAMwParam,//firstmessageparameter
LPARAMlParam//secondmessageparameter
);
classCWnd
{
public:
CWnd()
{
m_hWnd=NULL;
}
BOOLCreateEx(
DWORDdwExStyle,//extendedwindowstyle
LPCTSTRlpClassName,//pointertoregisteredclassname
LPCTSTRlpWindowName,//pointertowindowname
DWORDdwStyle,//windowstyle
intx,//horizontalpositionofwindow
inty,//verticalpositionofwindow
intnWidth,//windowwidth
intnHeight,//windowheight
HWNDhWndParent,//handletoparentorownerwindow
HMENUhMenu,//handletomenuorchild-windowidentifier
HANDLEhInstance,//handletoapplicationinstance
LPVOIDlpParam//pointertowindow-creationdata
);
BOOLShowWindow(intnCmdShow);
BOOLUpdateWindow();
public:
HWNDm_hWnd;
};
BOOLCWnd::CreateEx(
DWORDdwExStyle,//extendedwindowstyle
LPCTSTRlpClassName,//pointertoregisteredclassname
LPCTSTRlpWindowName,//pointertowindowname
DWORDdwStyle,//windowstyle
intx,//horizontalpositionofwindow
inty,//verticalpositionofwindow
intnWidth,//windowwidth
intnHeight,//windowheight
HWNDhWndParent,//handletoparentorownerwindow
HMENUhMenu,//handletomenuorchild-windowidentifier
HANDLEhInstance,//handletoapplicationinstance
LPVOIDlpParam//pointertowindow-creationdata
)
{
m_hWnd=::CreateWindowEx(dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,(HINSTANCE)hInstance,lpParam);
if(m_hWnd!=NULL)
returnTRUE;
else
returnFALSE;
}
BOOLCWnd::ShowWindow(intnCmdShow)
{
return::ShowWindow(m_hWnd,nCmdShow);
}
BOOLCWnd::UpdateWindow()
{
return::UpdateWindow(m_hWnd);
}
intWINAPIWinMain(
HINSTANCEhInstance,//handletocurrentinstance
HINSTANCEhPrevInstance,//handletopreviousinstance
LPSTRlpCmdLine,//pointertocommandline
intnCmdShow//showstateofwindow
)
{
WNDCLASSwndclass;//先設計窗口類
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(DKGRAY_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_HELP);
wndclass.hIcon=LoadIcon(NULL,IDI_WARNING);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WinDouProc;
wndclass.lpszClassName="Magic_Maggie";
wndclass.lpszMenuName=0;
wndclass.style=CS_VREDRAW|CS_HREDRAW;
//某一個變數原油幾個變數去掉一個特徵,可以用取反(~)後再進行與(&)
//例如:style上去掉CS_NOCLOSE,可以style&~CS_NOCLOSE;
RegisterClass(&wndclass);///注意先建立再注冊昂
CWndwnd;
wnd.CreateEx(NULL,"Magic_Maggie","DouDou",WS_OVERLAPPEDWINDOW,0,0,800,600,NULL,NULL,hInstance,NULL);
wnd.ShowWindow(SW_SHOWNORMAL);
wnd.UpdateWindow();
MSGmsg;//消息循環
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);//觸發WinDouProc
}
return0;
}
LRESULTCALLBACKWinDouProc(
HWNDhwnd,//handletowindow
UINTuMsg,//messageidentifier
WPARAMwParam,//firstmessageparameter
LPARAMlParam//secondmessageparameter
)
{
switch(uMsg)
{
caseWM_LBUTTONDOWN:
MessageBox(hwnd,"您按下了滑鼠左鍵昂","豆豆的程序",MB_OK);
HDChdc;
hdc=GetDC(hwnd);
//.text.
TextOut(hdc,0,0,"感謝您對豆豆程序的支持昂",strlen("感謝您對豆豆程序的支持昂"));
ReleaseDC(hwnd,hdc);
break;
caseWM_CHAR:
charszChar[20];
sprintf(szChar,"Charis%d",wParam);
MessageBox(hwnd,szChar,"豆豆的程序",MB_OK);
break;
caseWM_PAINT:
PAINTSTRUCTps;
HDChDc;
hDc=BeginPaint(hwnd,&ps);
TextOut(hDc,0,0,"這個是重繪滴哦",strlen("這個是重繪滴哦"));
EndPaint(hwnd,&ps);
break;
caseWM_CLOSE://這個case與下邊的destroy這個case不要弄錯了,否則窗口不出現,但任務管理器中運行
if(IDYES==MessageBox(hwnd,"您真的要退出么?","豆豆的程序",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
caseWM_DESTROY:
PostQuitMessage(0);
//////////////////////////////////////////?????????????????????
break;
default:
returnDefWindowProc(hwnd,uMsg,wParam,lParam);//別忘記了return
}
return0;
}
⑥ C#窗體設計
c#高級編程第四版來,如果有基礎的話看源這本書,可以說深入淺出,窗體設計+控制項介紹+實例一共就40頁左右,花兩天時間看完就入門了.
不要想去找什麼視頻教程,又不清晰又拖沓,反而沒什麼效率,還是自己邊看書邊操作更直接!
⑦ 怎樣用c語言設計立體窗口
立體窗口?你還想搞3D窗口嗎?如果只是想寫普通的窗口程序,可以用相關的API
⑧ C語言怎麼設計窗口呀
樓主
首先這不是c與c#區別
你學c#的時候之所以有這些控制項,能進行界面編輯是因為你內建的是winform程序容,在編輯的時候實際上也是有代碼控制的。如果你c#建的是控制台程序的話就會與c語言一樣了,但是你在應用中加入 using System.Windows.Forms;那麼就可以調用winform程序的控制項了。
一般的話你是為了學習一種語言的話建議學習控制台應用程序。如果用界面的話對你語言學習沒有什麼好處,反而會讓你分心。當你真真學習做一個項目的時候可以用winform來了。反正當你學習到一定程度你就會明白其中的關系了。
對於c語言的話我本人只用過控制台,通過代碼來創建窗口,也是可以產生你所需要的效果的。
你要明白現在你要學的是一門語言,你要懂得語法等知識,而不是費心去拉幾個控制項,所以好好的學好基礎吧。c#的話也在控制台上來聯系。你要學的不是開發工具,所以不要把精力浪費在這里,而且還把自己搞得亂七八糟的。
至於樓上的,vc是c++的編譯工具,只不過可以運行c語言程序而已,樓主用的工具比vc好的多,vc老了,樓主的才是新版,不用理會
⑨ C,C++設計出窗口程序的方法
主流當來然是MFC(Microsoft Foundation Classes),win32 Application 中的自API 函數 Create也可以繪制出一個窗口 再用ShowWindow顯示窗口 UpdateWindow更新窗口
⑩ 怎麼設計C語言立體窗口
所謂立體窗口實際上就是你自己畫出陰影,可以先下面畫出深色背景,然後在上面用正常背景色畫,類似這樣的效果。