如果写c语言需要有个界面输入输出,用API怎么实现?
API是用c语言写的,假如需要一个窗口来实现输入输出,是在API消息处理那直接写c程序,还是在程序组建那添加该窗口API,还是别的什么?例如我需要编写一个小数学计算程序c...
API是用c语言写的,假如需要一个窗口来实现输入输出,是在API消息处理那直接写c程序,还是在程序组建那添加该窗口API,还是别的什么?
例如我需要编写一个小数学计算程序 c语言代码如下
#include<stdio.h>
main()
{
int a,b,c;
printf("请输入a,b的值:");
scanf("%d%d",&a,&b);
c=a*b;
printf("a*b的结果为:%d",c);
}
而API窗口代码我也有 应该如何写 我给一个窗口代码吧:
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define pi 3.1415
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//--------------------以下初始化窗口类-----------------//
int WINAPI WinMain(HINSTANCE hInstance,//WinMain函数说明
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";//窗口类名
char lpszTitle[]="窗口示例程序";//窗口标题名
//窗口类的定义
wndclass.style=0; //窗口类型为默认类型
wndclass.lpfnWndProc=WndProc;//窗口处理函数为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=lpszClassName;//窗口类名为“窗口示例”
//--------------------以下进行窗口类的注册-------------
if(!RegisterClass(&wndclass)) //若注册失败则发出警告声音
{MessageBeep(0);
return FALSE;
}
//创建窗口操作
hwnd=CreateWindow(lpszClassName,// 窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,CW_USEDEFAULT,//窗口左上角的坐标为默认值
CW_USEDEFAULT,CW_USEDEFAULT,//窗口的高和宽为默认值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //应用程序的当前句柄
NULL); //不使用该值
ShowWindow(hwnd,nCmdShow); //显示窗口
UpdateWindow(hwnd); //绘制用户区
while(GetMessage(&Msg,NULL,0,0)) //消息循环
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam ; //程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
//此处添加消息处理代码
}
switch(iMessage)
{
case WM_DESTROY:
PostQuitMessage(0); //调用该函数发出WM_QUIT消息
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
return 0;
} 展开
例如我需要编写一个小数学计算程序 c语言代码如下
#include<stdio.h>
main()
{
int a,b,c;
printf("请输入a,b的值:");
scanf("%d%d",&a,&b);
c=a*b;
printf("a*b的结果为:%d",c);
}
而API窗口代码我也有 应该如何写 我给一个窗口代码吧:
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define pi 3.1415
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//--------------------以下初始化窗口类-----------------//
int WINAPI WinMain(HINSTANCE hInstance,//WinMain函数说明
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";//窗口类名
char lpszTitle[]="窗口示例程序";//窗口标题名
//窗口类的定义
wndclass.style=0; //窗口类型为默认类型
wndclass.lpfnWndProc=WndProc;//窗口处理函数为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=lpszClassName;//窗口类名为“窗口示例”
//--------------------以下进行窗口类的注册-------------
if(!RegisterClass(&wndclass)) //若注册失败则发出警告声音
{MessageBeep(0);
return FALSE;
}
//创建窗口操作
hwnd=CreateWindow(lpszClassName,// 窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,CW_USEDEFAULT,//窗口左上角的坐标为默认值
CW_USEDEFAULT,CW_USEDEFAULT,//窗口的高和宽为默认值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //应用程序的当前句柄
NULL); //不使用该值
ShowWindow(hwnd,nCmdShow); //显示窗口
UpdateWindow(hwnd); //绘制用户区
while(GetMessage(&Msg,NULL,0,0)) //消息循环
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam ; //程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
//此处添加消息处理代码
}
switch(iMessage)
{
case WM_DESTROY:
PostQuitMessage(0); //调用该函数发出WM_QUIT消息
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
return 0;
} 展开
3个回答
展开全部
首先你应该建立一个WIN32程序项目,而不是控制台项目。
在添加这些代码:
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define pi 3.1415
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//--------------------以下初始化窗口类-----------------//
int WINAPI WinMain(HINSTANCE hInstance,//WinMain函数说明
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";//窗口类名
char lpszTitle[]="窗口示例程序";//窗口标题名
//窗口类的定义
wndclass.style=0; //窗口类型为默认类型
wndclass.lpfnWndProc=WndProc;//窗口处理函数为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=lpszClassName;//窗口类名为“窗口示例”
//--------------------以下进行窗口类的注册-------------
if(!RegisterClass(&wndclass)) //若注册失败则发出警告声音
{MessageBeep(0);
return FALSE;
}
//创建窗口操作
hwnd=CreateWindow(lpszClassName,// 窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,CW_USEDEFAULT,//窗口左上角的坐标为默认值
CW_USEDEFAULT,CW_USEDEFAULT,//窗口的高和宽为默认值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //应用程序的当前句柄
NULL); //不使用该值
ShowWindow(hwnd,nCmdShow); //显示窗口
UpdateWindow(hwnd); //绘制用户区
while(GetMessage(&Msg,NULL,0,0)) //消息循环
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam ; //程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
//此处添加消息处理代码
}
switch(iMessage)
{
case WM_DESTROY:
PostQuitMessage(0); //调用该函数发出WM_QUIT消息
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
return 0;
}
在添加这些代码:
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define pi 3.1415
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//--------------------以下初始化窗口类-----------------//
int WINAPI WinMain(HINSTANCE hInstance,//WinMain函数说明
HINSTANCE hPrevInst,
LPSTR lpszCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="窗口";//窗口类名
char lpszTitle[]="窗口示例程序";//窗口标题名
//窗口类的定义
wndclass.style=0; //窗口类型为默认类型
wndclass.lpfnWndProc=WndProc;//窗口处理函数为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=lpszClassName;//窗口类名为“窗口示例”
//--------------------以下进行窗口类的注册-------------
if(!RegisterClass(&wndclass)) //若注册失败则发出警告声音
{MessageBeep(0);
return FALSE;
}
//创建窗口操作
hwnd=CreateWindow(lpszClassName,// 窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,CW_USEDEFAULT,//窗口左上角的坐标为默认值
CW_USEDEFAULT,CW_USEDEFAULT,//窗口的高和宽为默认值
NULL, //此窗口无父窗口
NULL, //此窗口无主菜单
hInstance, //应用程序的当前句柄
NULL); //不使用该值
ShowWindow(hwnd,nCmdShow); //显示窗口
UpdateWindow(hwnd); //绘制用户区
while(GetMessage(&Msg,NULL,0,0)) //消息循环
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam ; //程序终止时将信息返回系统
}
//窗口函数
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
switch(iMessage)
{
//此处添加消息处理代码
}
switch(iMessage)
{
case WM_DESTROY:
PostQuitMessage(0); //调用该函数发出WM_QUIT消息
default:
return DefWindowProc(hWnd,iMessage,wParam,lParam);
}
return 0;
}
展开全部
楼上的兄弟其实没有答到点上 为什么这么说 其实C语言作为内核而API作为界面实现的方法是这样的
先新建一个WIN32项目 (vc6.0环境下)把API界面的代码写出来 之后另存为.c的文件 编译器会自动生成一个.h的文件 之后写C语言代码 把那个.h的头文件用#include""的方式写进去 然后在资源处添加刚存储的.c的文件
也就是添加程序成员的方式 先写出C语言代码 然后添加工程组建的方式 把窗口API添加到里面就行 注意 把C语言中输入输出 赋值给一个全局变量 传递进API 用TextIn 和TextOut 函数来实现
这个是我问我们WINDOWS编程老师告诉我的 希望可以对大家有帮助
先新建一个WIN32项目 (vc6.0环境下)把API界面的代码写出来 之后另存为.c的文件 编译器会自动生成一个.h的文件 之后写C语言代码 把那个.h的头文件用#include""的方式写进去 然后在资源处添加刚存储的.c的文件
也就是添加程序成员的方式 先写出C语言代码 然后添加工程组建的方式 把窗口API添加到里面就行 注意 把C语言中输入输出 赋值给一个全局变量 传递进API 用TextIn 和TextOut 函数来实现
这个是我问我们WINDOWS编程老师告诉我的 希望可以对大家有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你看看天翼应用工厂,好像里面有相关的资料。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询