一个关于C++的问题
C++能设计出有窗口的程序吗,就是也要用鼠标,不像一般设计出的小程序那样的只能用键盘的、颜色都是黑的那种。
追问:什么是win api?什么是mfc?什么是qt?另外问一下,C++可以这样,C语言能吗?
答案:当然可以,LZ说的就是图形界面设计。在Windows上就是要使用win32 API进行编程(c语言),C++则可以使用封装后的MFC类库或QT类库。LINUX上使用KDE(c语言)或QT(C++类库)。下面是用C语言编写图形界面的一个例子#include <stdio.h>#include <windows.h>#include <math.h>int GetRoot(float a,float b,float c,double *root){double delta,deltasqrt;delta=b*b-4.0*a*c;deltasqrt=sqrt(delta);if(a>0.0|a<0.0){root[0]=(-b+deltasqrt)/(2.0*a);root[1]=(-b-deltasqrt)/(2.0*a);}elseif(b>0.0|b<0.0)root[0]=root[1]=-c/b;elsereturn 0;if(root[0]==root[1])return 1;elsereturn 2;}char str[80];LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){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="Hello";if(!RegisterClass(&wndclass)){MessageBox(NULL,"窗口注册失败!","HelloWin",0);return 0;}hwnd=CreateWindow("Hello","Application窗口",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,nCmdShow);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;static HWND hButton,hwndEdit[3];float a[3]; char strEdit[80];double root[2];int i;switch(message){case WM_CREATE:hwndEdit[0]=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,20,70,100,25,hwnd,NULL,NULL,NULL);hwndEdit[1]=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,130,70,100,25,hwnd,NULL,NULL,NULL);hwndEdit[2]=CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,240,70,100,25,hwnd,NULL,NULL,NULL); hButton=CreateWindow("button","Calculate",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,350,70,80,25,hwnd,NULL,NULL,NULL);return 0;case WM_COMMAND:if(((HWND)lParam==hButton)&&(HIWORD(wParam)==BN_CLICKED)){for(i=0;i<3;i++){GetWindowText(hwndEdit[i],strEdit,80);a[i]=(float)atof(strEdit);}int n=GetRoot(a[0],a[1],a[2],root);if(n<1)strcpy(str,"方程无根!");else sprintf(str,"方程的解为: %f,%f",root[0],root[1]);MessageBox(NULL,str,"方程的根",0);}case WM_PAINT:hdc=BeginPaint(hwnd,&ps);TextOut(hdc,10,10,"请输入一元二次方程的系数:",25);TextOut(hdc,10,40,"a",1); TextOut(hdc,120,40,"b",1); TextOut(hdc,230,40,"c",1);TextOut(hdc,10,90,str,strlen(str)); EndPaint(hwnd,&ps);return 0;case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd,message,wParam,lParam);}
可以的,一般来讲如果是C++的话,用MFC,控件都是画上去的,和VB、C#类似。。
如果用VC6.0的话可以这样:
1、新建,在项目中选择MFC应用程序(exe)。。
2、在加下来的应用程序类型中,选择“基于对话框模式”。。
3、然后按确定即可。。如下图。。
C语言也可以做这样的窗体程序,不过就没这么方便了,所有东西都得自己写上去,就是用的Windows API了。。您可以查阅相关资料。。可以的,可以用win api,也有专门的UI库,比如MFC ,还有跨平台的,如QT等
你说的是在DOS下的程序吧。在Visual C++中不仅可以设计Dos控制台的程序(就是你说的那种),还可以设计出MFC的程序,类似Word文档。
上一个:求c++按钮代码
下一个:c++高手来啊!