❶ 誰能幫我做個c++或c語言編寫的實現滑動窗口協議的程序啊,要能運行的,給個cpp也行,很急。
請自己寫....
#include<stdio.h>
intmain()
{
return0;
}
開頭給你了,加油~
❷ 用C語言編寫個帶彈出窗口的程序
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
MessageBox (NULL, TEXT ("Hello, bccn!"), TEXT ("HelloMsg"), 0) ;
return 0 ;
}
❸ C語言 如何實現窗口的上下移動 左右移動
這個很復雜的 你要重新寫好多函數 包括像printf 什麼的
因為有可能讓他列印一個字元串,但是有很多字元是沒在屏幕裡面的
而系統是沒有這些方便的函數的
工作量太大,你估計不會去寫得
❹ C語言「窗口滑動」代碼中的疑問
這個是在命令行中模擬圖形界面的操作?
n表示你設定的窗口大小, 也就是每行的字元數.
r表示送入和刪除字元後, 當前所在的窗口位置.
❺ C語言中怎麼用鍵盤控制界面的物體移動
這里有個用C語言控制屏幕上小飛機運動的代碼,供參考:
#include<stdio.h>
#include<Windows.h>
#include<time.h>
#include"stdio.h"
#include <conio.h>
#define N 35
int scr[22][N]={0},pl=9,width=24,speed=3,density=30;
int score=0,death=0;
void print(int a[][N])
{
system("cls");
int i,j;
for(i=0;i<22;i++)
{
a[i][width-1]=4;
for(j=0;j<width;j++)
{
if(a[i][j]==0) printf(" ");
if(a[i][j]==1) printf("\5");
if(a[i][j]==2) printf(".");
if(a[i][j]==3) printf("\3");
if(a[i][j]==4) printf("|");
if(i==0 && j==width-1) printf("score:%d",score);
if(i==1 && j==width-1) printf("death:%d",death);
if(i==2 && j==width-1) printf("setting:ESC");
}
printf("\n");
}
}
void movebul(int a[][N])
{
int i,j=0;
for(i=0;i<22;i++)
{
if(i==0 && a[i][j]==2)a[i][j]==0;
if(a[i][j]==2)
{
if(a[i-1][j]==3) score+=10,printf("\7");
a[i][j]=0,a[i-1][j]=2;
}
}
}
void movepla(int a[][N])
{
int i,j;
for(i=21;i>=0;i--)
for(j=0;j<width;j++)
{
if(i==21&&a[i][j]==3) a[i][j]=0;
if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;
}
if(a[20][pl]==3&&a[21][pl]==1)death++;
}
void setting(void)
{
int sw=0,i,j;
system("cls");
do
{
sw=0;
printf("\n游戲界面的大小:1.大2.小>>");
switch(getchar())
{
case'1':width=34;break;
case'2':width=24;;break;
default:printf("\n錯誤,請重新選擇...\n");
sw=1;
}
}while(sw);
do
{
sw=0;
printf("\n請選擇敵機密度:1.大2.中3.小>>");
switch(getchar())
{
case'0':density=10;break;
case'1':density=20;break;
case'2':density=30;break;
case'3':density=40;break;
default:printf("\n錯誤,請重新選擇...\n");
sw=1;
}
}while(sw);
do
{
sw=0;
printf("\n敵機的飛行速度:1.快2.中3.慢>>");
switch(getchar())
{
case'1':speed=2;break;
case'2':speed=3;break;
case'3':speed=4;break;
default:printf("\n錯誤,請重新選擇...\n");
sw=1;
}
}while(sw);
for(i=0;i<22;i++)
for(j=0;j<45;j++)
scr[i][j]=0;
scr[21][pl=9]=1;
printf("\n按任意鍵保存...");
getchar();
}
void menu(void)
{
printf("說明:按AD控制我機左右飛行,W發射子彈\n設置:請按Esc\n開始游戲:任意鍵");
if(getchar()==27) setting();
}
void main()
{
menu();
int i=0,j=0;
scr[21][pl]=1;
scr[0][5]=3;
while(1)
{
if(kbhit())
switch(getch())
{
case'a':
case'A':if(pl>0)
scr[21][pl]=0,scr[21][--pl]=1;break;
case'd':
case'D':if(pl<width-2)
scr[21][pl]=0,scr[21][++pl]=1;break;
case'w':
case'W':scr[20][pl]=2;break;
case 27:setting();break;
}
if(++j%density==0)
{
j=0;
srand(time(NULL));
scr[0][rand()%width]=3;
}
if(++i%speed==0) movepla(scr);
movebul(scr);
print(scr);
if(i==30000) i=0;
}
}
❻ C語言中用MoveWindow()能把一個窗口內的按鈕移到這個窗口外面嗎
按鈕既然屬於這個窗口,當按鈕的位置不在窗口范圍內時,就不會顯示出來,
所以不能顯示在窗口外.
❼ 怎麼用C語言編寫一個windows窗口
調用window庫窗口函數即可創建windows窗口。
必須使用windows的編譯器,如VC,MS等等。
RegisterClassEx函數:
該函數注冊在隨後調用CreateWindow函數和CreateWindowEx函數中使用的窗口類。 RegisterClass函數己經由函數RegisterClassEx函數來代替,但是,如果不需要設置類的小目標則仍然可以使用RegisterClass函數。
CreateWindowEx函數:
該函數創建一個具有擴展風格的層疊式窗口、彈出式窗口或子窗口,其他與CreateWindow函數相同。關於創建窗口和其他參數的內容,請參看CreateWindow。具體仍可見微軟的msdn。
消息處理函數WindowProc:
該函數是一個應用程序定義的函數。它處理發送給窗口的消息。WINDPROC類型定義了一個指向該回調函數的指針。WindowProc是用於應用程序定義函數的佔位符。
函數原型:
LRESULT CALLBACK WindowProc (HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
參數:
hwnd:指向窗口的句柄。
uMsg:指定消息類型。
wParam:指定其餘的、消息特定的信息。該參數的內容與UMsg參數值有關。
IParam:指定其餘的、消息特定的信息。該參數的內容與uMsg參數值有關。
返回值:返回值就是消息處理結果,它與發送的消息有關。
一個簡單的Window的代碼如下:#include<Windows.h>
#include<tchar.h>
LRESULTWINAPIWinProc(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);
intWinMain(
__inHINSTANCEhInstance,
__in_optHINSTANCEhPrevInstance,
__inLPSTRlpCmdLine,
__inintnShowCmd
)
{
TCHAR*szName=_T("myWindow");
WNDCLASSEXwc={0};
HWNDhWnd=NULL;
MSGMsg={0};
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.cbSize=sizeof(WNDCLASSEX);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//通過函數來設置一個白色的背景,這里大家設置為NULL看看,會很有趣的
wc.hCursor=NULL;//不設置
wc.hIcon=NULL;//不設置
wc.hIconSm=NULL;//不設置
wc.hInstance=hInstance;//當前程序的句柄,hInstance是有系統給傳遞的
wc.lpfnWndProc=WinProc;//窗口處理過程的回調函數。
wc.lpszClassName=szName;//窗口類的名字。
wc.lpszMenuName=NULL;
wc.style=CS_HREDRAW|CS_VREDRAW;
RegisterClassEx(&wc);//在系統中注冊
hWnd=CreateWindowEx(WS_EX_CLIENTEDGE,szName,_T("我的窗口我喜歡"),WS_OVERLAPPEDWINDOW,
200,100,600,400,NULL,NULL,hInstance,NULL);//創建窗口,窗口標題為"我的窗口我喜歡"
if(hWnd==NULL)
{
MessageBox(NULL,_T("There'sanError"),_T("ErrorTitle"),MB_ICONEXCLAMATION|MB_OK);
return0;
}
ShowWindow(hWnd,nShowCmd);//顯示窗口
UpdateWindow(hWnd);
//下面是對消息的循環處理,大家先不必管這些,下節課我會細說的
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);//翻譯消息
DispatchMessage(&Msg);//分派消息
}
returnMsg.message;
}
//消息處理函數
LRESULTWINAPIWinProc(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam)
{
switch(Msg)//處理消息過程
{
caseWM_DESTROY://響應滑鼠單擊關閉按鈕事件
PostQuitMessage(0);//退出消息隊列
return0;//退出函數
}
returnDefWindowProc(hWnd,Msg,wParam,lParam);
}
❽ 誰能給個嵌入式觸屏的C語言代碼
首先如果要在操作系統上實現,那麼一定要有操作系統的源碼(是linux系統嗎),至少要有驅動的源碼,在你這里至少需要觸摸屏驅動的源碼。不過對於目前你的要求似乎不需要在操作系統的級別上實現,在應用層就可以實現,只要應用層可以捕捉到觸摸屏點擊當前的坐標就可以執行你想要的操作,另外,你說的改變顏色深淺應該指的是顯示屏的顏色吧,也就是說,如果你要修該得是顯示屏的顏色深淺,這和觸摸屏是不同的驅動,因此還是建議你考慮一下做到應用層
❾ C語言是針對圖形界面程序的嗎 如何用C編寫一個最簡單的窗口程序 代碼是
C語方下可以在文本模式下作出,也可以在圖形模式下畫出,用的是一些擴展庫,就是說不是C標准庫,下面給一個框架,不知道建不建議學,感覺過時了,看你自已的興趣了,感興趣下了功夫肯定能學好,因為它根本就不難,只不過用了些非標准庫的所謂高級函數而已
#include <process.h>
#include <dos.h>
#include <conio.h>
#define Key_DOWN 0x5100
#define Key_UP 0x4900
#define Key_ESC 0x011b
#define Key_ALT_F 0x2100
#define Key_ALT_X 0x2d00
#define Key_ENTER 0x1c0d
void box(int startx,int starty,int high,int width);
main()
{
int i,key,x,y,l;
char *menu[] = {"File","Edit","Run","Option","Help","Setup","Zoom","Menu"};
/* 主菜單各項 */
char *red[] = { "F","E","R","O","H","S","Z","M" }; /* 加上紅色熱鍵 */
char *f[] = {"Load file", "Save file", "Print", "Modify ", "Quit A1t_x"};
/* File 項的子菜單 */
char buf[16*10*2],buf1[16*2]; /* 定義保存文本的緩沖區 */
while(1)
{
textbackground(BLUE);
clrscr();
textmode(C80);
window(1,1,80,1);/* 定義顯示主菜單的窗口 */
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
gotoxy(5,1);
for(i=0,l=0;i<8;i++)
{
x=wherex(); /* 得到當前游標的坐標 */
y=wherey();
cprintf("%s",menu[i]); /* 顯示各菜單項 */
l=strlen(menu[i]); /* 得到菜單項的長度 */
gotoxy(x,y);
textcolor(RED);
cprintf("%s",red[i]); /* 在主菜單項各頭字元寫上紅字元 */
x=x+l+5;
gotoxy(x,y);
textcolor(BLACK); /* 為顯示下一個菜單項移動游標 */
}
gotoxy(5,1);
key=bioskey(0);
switch (key){
case Key_ALT_X:
exit(0); /* ALT_X 則退出 */
case Key_ALT_F:
{
textbackground(BLACK);
textcolor(WHITE);
gotoxy(5,1);
cprintf("%s",menu[0]); /* 加黑 File 項 */
gettext(5,2,20,12,buf); /* 保存窗口原來的文本 */
window(5,2,20,9);/* 設置作矩形框的窗口 */
textbackground(LIGHTGRAY);
textcolor(BLACK);
clrscr();
box(1,1,7,16); /* 調用作框函數 */
for(i=2;i<7;i++) /* 顯示子菜單各項 */
{ gotoxy(2,i);
cprintf("%s",f[i-2]);
}
gettext(2,2,18,3,buf1); /*將下拉菜單的內容保存在 buf1*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,2);
cprintf("%s",f[0]);/*加黑下拉菜單的第一項 load file*/
gotoxy(2,2);
y=2;
while ((key=bioskey(0))!=Key_ALT_X) /* 等待選擇下拉菜單項*/
{
if ((key==Key_UP)||(key==Key_DOWN))
{
puttext(2,y,18,y+1,buf1); /* 恢復原先的項 */
if (key==Key_UP)
y=y==2?6:y-1;
else
y=y==6?2:y+1;
gettext(2,y,18,y+1,buf1);/*保存要壓上光條的子菜單項*/
textbackground(BLACK);
textcolor(WHITE);
gotoxy(2,y);
cprintf("%s",f[y-2]); /* 產生黑條壓在所選項上 */
gotoxy(2,y);
}
else
if (key==Key_ENTER)/* 若是回車鍵,判斷是哪一子菜單按的回
車,在此沒有相應的特殊處理*/
{
switch ( y-1 ){
case 1: /* 是子菜單項第一項:Load file */
break;
case 2: /* Save file */
break;
case 3: /* print */
break;
case 4: /* modify */
break;
case 5:
exit(0);
default:
break;
}
break;
}
else
if (key==Key_ESC)
break; /* 是 Esc 鍵,返回主菜單 */
}
if (key==Key_ALT_X) exit(0);
break;
}
}
}
}
void box(int startx,int starty,int high,int width) /* 畫矩形框函數 */
{ int i;
gotoxy(startx,starty);
putch(0xda); /* 畫┌ */
for (i=startx+1;i<width;i++) putch(0xc4); /* 畫— */
putch(0xbf); /* 畫┐ */
for( i=starty+1;i<high;i++)
{
gotoxy(startx,i);putch(0xb3); /* 畫│ */
gotoxy(width,i);putch(0xb3); /* 畫│ */
}
gotoxy(startx,high);
putch(0xc0); /* 畫└ */
for (i=startx+1;i<width;i++) putch(0xc4); /* 畫— */
putch(0xd9); /* 畫┘ */
return ;
}
❿ c語言滾動字幕代碼
在軟體啟動時,為了加深軟體在用戶頭腦中的印象,可以在軟體封面上由下而上循環滾動顯示一些包含軟體名稱、功能、版本、用戶名、研製單位等文字信息,在用戶按下任意鍵或點擊滑鼠鍵後,立即結束演示進入程序主界面。本文通過向工程中添加Splash screen組件,然後在CsplashWnd類中添加DrawText成員方便地實現了具有滾動文字效果的軟體封面,其中文字的位置、對齊方式、字體、字型大小、顏色都由程序來控制。
---- 詳細設計步驟如下:
---- 1.創建一個名為test的SDI或MDI工程;
---- 2.向工程中添加Splash screen組件,即添加一個CWnd類的派生類CsplashWnd;
---- 3.編輯或導入軟體封面的點陣圖資源,標識號為IDB_SPLASH;
---- 4.向CsplashWnd類中添加一個公有成員函數DrawText,此函數用來在軟體封面中顯示文字,的實現代碼如下:(其中參數含義分別為:內存dc,文字位置,對齊方式,字體,字型大小,顏色,正文文字)
void CSplashWnd::DrawText(CDC *pDC,
int x, int y, int nAlign,
CString sFontName, int nFONTSIZE0,
COLORREF crTextColor, CString sText)
{
LOGFONT lf;//字體
lf.lfStrikeOut=0;//刪除線
lf.lfCharSet = DEFAULT_CHARSET ;//字元集
lf.lfEscapement =0;//角度
lf.lfItalic = 0 ;//傾斜
lf.lfUnderline = 0 ;//下劃線
lf.lfHeight = nFONTSIZE0 ;//字型大小
strcpy(lf.lfFaceName,sFaceName.
GetBuffer(sFontName.GetLength()));
CFont font ;
font.CreateFontIndirect(&lf);
CFont *pOldFont = (CFont *)
pDC->SelectObject(&font);
UINT oldAlign,uAlign ;
switch(nAlign)
{
case 0: uAlign = TA_LEFT | TA_TOP ; break;
case 1: uAlign = TA_CENTER | TA_TOP; break;
case 2: uAlign = TA_RIGHT | TA_TOP ; break;
default: uAlign = TA_LEFT | TA_TOP ; break;
}
oldAlign = pDC->SetTextAlign(uAlign);
int oldMode = pDC->SetBkMode(TRANSPARENT);
int oldColor = pDC->SetTextColor(crTextColor) ;
pDC->TextOut(x,y,sText);
pDC->SetTextColor(oldColor) ;
pDC->SetTextAlign(oldAlign);
pDC->SetBkMode(oldMode);
pDC->SelectObject(pOldFont);
font.DeleteObject();
}
---- 5. 給CsplashWnd類中添加如下公有成員變數,並初始化變數;
class CSplashWnd : public CWnd
{
......
public:
CDC m_dcText,m_dcImage;//顯示dc的兼容內存dc
CBitmap* m_pBitmap;//點陣圖對象
CBitmap* m_pOldBitmapText,
*m_pOldBitmap;//跟蹤內存dc中的原點陣圖
CRgn m_rgn;//用於生成矩形區域
CRect m_TextRect ;//顯示文字的矩形區域
int m_nCurPos ;//文字當前位置
......
}
CSplashWnd::CSplashWnd()
{......
m_nCurPos = 50 ;
......
}
---- 6.在SPLASH.CPP中加入以下預定義命令:
#define TITLECOLOR RGB(0,0,255)//默認標題顏色
#define CONTENTCOLOR RGB(0,255,255)//默認說明文字顏色
#define FONTSIZE0 15 //默認字型大小
---- 7. 在CsplashWnd類Create中拷貝矩形區域到m_TextRect ;
BOOL CSplashWnd::Create
(CWnd* pParentWnd /*= NULL*/)
{......
m_TextRect.CopyRect
(&CRect(50,100,500,300));
......
}
---- 8. 在CsplashWnd類的成員OnPaint中添加代碼,響應顯示窗口時發送的WM_PAINT消息。
void CSplashWnd::OnPaint()
{
CPaintDC dc(this);
BITMAP bm;
m_bitmap.GetBitmap(&bm);
static BOOL bFirst = TRUE;//
指示是否第一次繪制窗口
if(bFirst)
{
if (!m_dcImage.CreateCompatibleDC(&dc)) return;
m_pOldBitmap = m_dcImage.SelectObject(&m_bitmap);
if (!m_dcText.CreateCompatibleDC(&dc)) return;
m_pBitmap = new CBitmap ;
int nBitCount = m_dcText.GetDeviceCaps(BITSPIXEL);
m_pBitmap->CreateBitmap
(bm.bmWidth,bm.bmHeight,1,nBitCount,NULL);
m_pOldBitmapText = m_dcText.SelectObject(m_pBitmap);
m_rgn.CreateRectRgn(m_TextRect.left,m_TextRect.top,
m_TextRect.right,m_TextRect.bottom);
bFirst = FALSE;
}
m_dcText.SelectClipRgn(NULL);
m_dcText.BitBlt(0, 0, bm.bmWidth,
bm.bmHeight,&m_dcImage, 0, 0, SRCCOPY);
m_dcText.SelectClipRgn(&m_rgn);
int nBasex = m_TextRect.left ;
int nBasey = m_TextRect.bottom-m_nCurPos;
int nMidx = m_TextRect.left + m_TextRect.Width()/2 ;
DrawText(&m_dcText,nMidx,nBasey, 1,
"楷體_GB2312", FONTSIZE0+5,TITLECOLOR,"研製單位");
DrawText(&m_dcText,nMidx,nBasey+30, 1,
"楷體_GB2312", FONTSIZE0,CONTENTCOLOR,
"武警指揮學院模擬中心");
DrawText(&m_dcText,nMidx,nBasey+50, 1,
"楷體_GB2312", FONTSIZE0,TITLECOLOR,"郵政編碼");
DrawText(&m_dcText,nMidx,nBasey+70, 1,
"楷體_GB2312", FONTSIZE0,CONTENTCOLOR,"300350");
dc.BitBlt(0, 0, bm.bmWidth,
bm.bmHeight,&m_dcText, 0,0, SRCCOPY);
}