可以用VC6.0也可以用VS.net.都行
成都創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷,提供做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站開(kāi)發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷、小程序開(kāi)發(fā)、公眾號(hào)商城、等建站開(kāi)發(fā),成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。
用了,messagebox就是.
api函數(shù)主要看msdn
給你win32寫(xiě)的窗口:
里面用到一個(gè)playsound函數(shù)播放一個(gè)wav格式的生音
#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) ;
}
主要有下面幾個(gè)步驟:
1. 創(chuàng)建新的動(dòng)態(tài)鏈接庫(kù)項(xiàng)目,并在其中添加類的聲明和定義文件;
尤其需要注意的是在類成員函數(shù)的聲明中需要使用declspec(dllexport)修飾符,該修飾符能夠使此DLL中的方法被導(dǎo)出以供其他應(yīng)用程序使用。
2. 創(chuàng)建引用動(dòng)態(tài)鏈接庫(kù)的應(yīng)用程序;
若要使用在動(dòng)態(tài)鏈接庫(kù)中創(chuàng)建的成員函數(shù),則必須引用該動(dòng)態(tài)鏈接庫(kù)。選中調(diào)用DLL的項(xiàng)目,從“項(xiàng)目”菜單中選擇“引用”,找到動(dòng)態(tài)鏈接庫(kù)對(duì)應(yīng)的工程目錄。
若要引用動(dòng)態(tài)鏈接庫(kù)的頭文件,必須修改包含目錄路徑。在“附加包含目錄中”找到DLL頭文件所在的路徑。
可執(zhí)行文件僅在運(yùn)行時(shí)加載動(dòng)態(tài)鏈接庫(kù)。必須告訴系統(tǒng)在哪里查找DLL,通過(guò)PATH變量指出.dll文件所在的路徑。
3. 在調(diào)用DLL的應(yīng)用程序中像使用系統(tǒng)提供的其它DLL一樣使用自定義的DLL中的成員函數(shù)就可以了。
1、對(duì)于窗口組件菜單,需要根據(jù)不同平臺(tái),通過(guò)圖形編程接口,進(jìn)行菜單的編制。
例程:
#includestdio.h?
#includegraphics.h?
#includeconio.h?
void?main()?
{?
char?str;?
int?i,k,choice=1;?
int?gd=DETECT,gm;?
initgraph(gd,gm,"?");?
setbkcolor(2);?
settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
outtextxy(140,150,"B.?The?Digital?Clock.");?
outtextxy(140,180,"C.?Exit.");?
setlinestyle(0,0,3);?
rectangle(170,115,370,145);?
/*按上下鍵選擇所需選項(xiàng)*/?
for(i=1;i=100;i++)?
{?
str=getch();?
if(str==72)?
{?
--choice;?
if(choice==0)choice=3;?
}?
if(str==80)?
{?
++choice;?
if(choice==4)choice=1;?
}?
if(str==13)break;?/*按回車鍵確認(rèn)*/?
/*畫(huà)圖做菜單*/?
cleardevice();?
switch(choice)?
{?case?1:?setlinestyle(0,0,3);?
rectangle(170,115,400,145);?
settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,150,"B.?The?Digital?Clock.");?
outtextxy(140,180,"C.?Exit.");?
break;?
case?2:?setlinestyle(0,0,3);?
rectangle(170,145,400,175);?
settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,150,"B.?The?Digital?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,180,"C.?Exit.");?
break;?
case?3:?settextstyle(3,0,3);?
outtextxy(140,120,"A.?The?Mock?Clock.");?
outtextxy(140,150,"B.?The?Digital?Clock.");?
settextstyle(3,0,3);?
outtextxy(140,180,"C.?Exit.");?
setlinestyle(0,0,3);?
rectangle(170,175,400,205);?
break;?
}?
}?
if(i=100)exit(0);/*如果按鍵超過(guò)100次退出*/?
switch(choice)/*這里引用函數(shù),實(shí)現(xiàn)所要的功能*/?
{?
case?1:?cleardevice();?
setbkcolor(4);?
settextstyle(3,0,4);?
outtextxy(160,120,"No.1?have?not?built.");?break;?
case?2:?cleardevice();?
setbkcolor(4);?
settextstyle(3,0,4);?
outtextxy(160,150,"No.2?have?not?built.");?
break;?
case?3:?exit(0);?
}?
getch();?
closegraph();?
}
2、對(duì)于命令行菜單,直接通過(guò)不斷刷新輸出來(lái)模擬菜單行為。
例程:
#include?stdio.h
#include?stdlib.h?
#include?string.h
int?n,t,k;
int?m;
char?s1[20],s2[20],c;
char?**l;
char?*num[]={"one","two","three","four","five","six","seven","eight","nine","ten"};
void?menu()
{
printf("\n\n\t\t*******************************************************\n");
printf("\t\t**???1.查找字符串S1中S2出現(xiàn)的次數(shù)????????????????????**\n");
printf("\t\t**???2.統(tǒng)計(jì)字符串中大小寫(xiě)字母,數(shù)字出現(xiàn)的次數(shù)????????**\n");
printf("\t\t**???3.將數(shù)字翻譯成英語(yǔ)??????????????????????????????**\n");
printf("\t\t**???4.結(jié)束??????????????????????????????????????????**\n");
printf("\t\t*******************************************************\n");
printf("\t\t?????您的輸入:");
fflush(stdin);
scanf("%d",n);
}
void?check()
{
char?a[20],b[20];
int?j=0,k,m,l=0;
int?t=0,n=0;
printf("請(qǐng)輸入主字符串:\n");
scanf("%s",a);
k=strlen(a);
printf("請(qǐng)輸入子字符串:\n");
scanf("%s",b);
m=strlen(b);
for(n=0;nk;n++)
if(a[n]==b[0])
{
j++;?/*記錄相同的字符數(shù)*/
do
{????
if(a[++n]==b[++t])
{?
j++;
if(j==m)?
{
l++;/*子字符串相同數(shù)*/
j=0;/*判斷后相同字符數(shù)歸零*/
t=-1;/*判斷中if中++t;t將會(huì)歸零*/
}
}
else
{
j=0;
t=0;
break;/*如果不同跳出while循環(huán)讓for使n+1繼續(xù)判斷*/
}
}while(a[n]!='\0');/*查找完字符數(shù)組a結(jié)束*/
}
printf("子字符串出現(xiàn)次數(shù):\n%d\n",l);
}??????????????????????????????????
void?cout()
{
int?n=0,t=0,k=0;
printf("請(qǐng)輸入一個(gè)字符串:\n");
fflush(stdin);/*清除緩沖*/
while((c=getchar())!='\n')
{
if(c='a'c='z')
n++;
if(c='A'c='Z')
t++;
if(c='0'c='9')
k++;
}
printf("有大寫(xiě)字母:\n%d\n",t);
printf("有小寫(xiě)字母:\n%d\n",n);
printf("有數(shù)字:\n%d\n",k);
}
void?number()
{
l=num;
printf("請(qǐng)輸入一個(gè)數(shù)字:(0-10)\n");
fflush(stdin);
scanf("%d",m);
printf("%d對(duì)應(yīng)的英文是:\n%s\n",m,*(l+m-1));
}
void?main()
{
while(1)
{???
system("cls");
menu();
switch(n)
{
case?1:system("cls");check();system("pause");break;
case?2:system("cls");cout();system("pause");break;
case?3:system("cls");number();system("pause");break;
case?4:system("cls");break;
default:system("cls");break;?
}
if(n==4)?break;
}
printf("感謝使用\n");
}
1.函數(shù)說(shuō)明:FindWindow,Win32 API函數(shù)。
FindWindow函數(shù)返回與指定字符串相匹配的窗口類名或窗口名的最頂層窗口的窗口句柄。這個(gè)函數(shù)不會(huì)查找子窗口。
2.函數(shù)原型:
HWND FindWindow( LPCTSTR lpClassName,
LPCTSTR lpWindowName
);3.參數(shù)說(shuō)明:
lpClassName
指向一個(gè)以null結(jié)尾的、用來(lái)指定類名的字符串或一個(gè)可以確定類名字符串的原子。如果這個(gè)參數(shù)是一個(gè)原子,那么它必須是一個(gè)在調(diào)用此函數(shù)前已經(jīng)通過(guò)GlobalAddAtom函數(shù)創(chuàng)建好的全局原子。這個(gè)原子(一個(gè)16bit的值),必須被放置在lpClassName的低位字節(jié)中,lpClassName的高位字節(jié)置零。
lpWindowName
指向一個(gè)以null結(jié)尾的、用來(lái)指定窗口名(即窗口標(biāo)題)的字符串。如果此參數(shù)為NULL,則匹配所有窗口名。
4返回值:
如果函數(shù)執(zhí)行成功,則返回值是擁有指定窗口類名或窗口名的窗口的句柄。
如果函數(shù)執(zhí)行失敗,則返回值為 NULL ??梢酝ㄟ^(guò)調(diào)用GetLastError函數(shù)獲得更加詳細(xì)的錯(cuò)誤信息。5.使用示例:HWND hWndRcv = ::FindWindow(NULL,"123");if(hWndRcv != NULL){ AfxMessageBox("找到123窗口");}
C語(yǔ)言的函數(shù) 可以和Turbo C的函數(shù)做同一個(gè)理解,
Turbo C 是在DOS環(huán)境下運(yùn)行的,是一個(gè)8位的C語(yǔ)言環(huán)境,
WIN32 API 顧名思義 是在32位的環(huán)境下運(yùn)行的,
如此 Turbo C顯然不能調(diào)用WIN32的API
如果你是初學(xué)者,想學(xué)習(xí)C語(yǔ)言。
強(qiáng)烈建議你先用Turbo C處理書(shū)本上一些例題。
然后用VC學(xué)習(xí)API
用VC理由如下:
1、WIN32 API屬于微軟,當(dāng)然要用微軟公司開(kāi)發(fā)的VC。
2、網(wǎng)絡(luò)上鋪天蓋地的電子書(shū)、視頻都是關(guān)于VC的。
3、企業(yè)基本都在用windows操作系統(tǒng)
至于什么DEV C;WINNER C; BOLAND C++建議根本不要碰——浪費(fèi)時(shí)間……
最后 祝你好運(yùn)!