| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5137 人关注过本帖
标题:[名词解释] 什么叫API
只看楼主 加入收藏
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:0 
回复 19楼 BlueGuy
哇哇,我只想知道你研究是什么意思。
前辈能否指教一下

用心做一件事情就这么简单
2012-04-07 23:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
世界上的API数量巨大,单一某个系统的API也可能很复杂,没有谁可以全部精通,甚至连知晓都未必。其实,即使是C/C++语言提供的库函数,也没几个人敢说自己全部都知道并能熟练运用的,很多人,其实并不知道库函数已经提供了某种功能,还是一样当没有地去自己写一个,只要写得好,也不妨碍编程应用,最多浪费一点时间精力而已。同样,不会写替代函数的人,也可以多查资料、多问人,总有找到的时候,也同样不妨碍编程应用。因此,这里不存在什么高低层次问题,不能说其实已经有现成的就不需要写了,也不能说有现成的也不用非要自己写才是本事,没有这样的说法,只能是能满足应用、效果令人满意即可。

API,也有底层和高层之分的,中间件也一样是API。Win32 API是系统底层的API(类似与TC/BC时代的系统中断及其调用),而有时候其实并不需要知晓太多的底层API(视具体应用而言),一般而言,了解底层API也是为了做出高层封装而做的,封装完成,了解也就告一段落了,忘了也没关系,因为需要的高层函数已经有了,可以用了。这里,是看你封装得是否让自己满意。MFC是别人替我们封装好了一种Win32 API类库,同样.NET也是(替代MFC的另一种封装),我们平常都是用这个——在.NET未盛行之前,只有MFC封装,而MFC的封装并不太好,所以才有人说要直接用原始Win32 API,但现在其实没这种需要了。对游戏编程来说,其实用OpenGL或DirectX这样的API,比直接用Win32 API也来得好,正如用.NET比用Win32 API更好一样。

基本上,是用到什么就学什么,是需求驱动你去学习的,没有需求,学什么都是假的,不可能真正入脑,学了也不知道怎么用,等于没学。

[ 本帖最后由 TonyDeng 于 2012-4-7 23:39 编辑 ]
收到的鲜花
  • 小鱼儿c2012-04-07 23:43 送鲜花  49朵   附言:我很赞同

授人以渔,不授人以鱼。
2012-04-07 23:33
小跳蚤
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:437
专家分:1623
注 册:2011-4-9
收藏
得分:0 
学习了
2012-04-08 08:24
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
对游戏编程来说,其实用OpenGL或DirectX这样的API,比直接用Win32 API也来得好,正如用.NET比用Win32 API更好一样。

貌似WOW和微软的很多游戏都是DirectX搞出来的吧。

梅尚程荀
马谭杨奚







                                                       
2012-04-08 08:46
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 16楼 有容就大
你怎么知道对话框资源编译完成后,不能修改?呵呵。

我们都在路上。。。。。
2012-04-08 10:18
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用hellovfp在2012-4-8 10:18:47的发言:

你怎么知道对话框资源编译完成后,不能修改?呵呵。
看的是如鹏网C语言也能干大事视频 在他指导建立的向导中用控件进行界面编辑后 运行程序无法再运行后的视窗中改变窗口的大小 貌似也不能刷新窗口 只能在已引入的控件中进行某些程序功能的演示, 如果要改变窗口大小还要去Dialog文件中进行修改。找遍他的程序没看到UpdateWindow函数。
如果要在运行后的视窗下进行窗口的刷新我猜是不是可以再他的基础上添加一些东西 不过现在还不知道怎么弄
下面是他代码的核心部分:
Main.cpp
程序代码:
#include "stdafx.h"
#include "resource.h"
#include "MainDlg.h"
#include <COMMCTRL.H>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    //Enable IPAddress、Calendar.etc
    InitCommonControls();
    DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
    return 0;
}

MainDlg.cpp
程序代码:
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"

/*
Template designed by  Please visit <span style="color: #008000; text-decoration: underline;">http://www.[/color] for more information
如鹏网(<span style="color: #008000; text-decoration: underline;">http://www.[/color])大学生计算机学习社区,提供大量免费视频学习教程,提供个性化一对一学习指导
*/
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
        HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }

    return FALSE;
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    return TRUE;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case ID_MENUITEMOPEN:
        {
            FILE *fp = fopen("D:/1.txt", "r");
            // 可以读多行
            char line[256];
            fgets(line, sizeof(line), fp);
            fclose(fp);
            SetDlgItemText(hwnd, IDC_EDIT1, line);
        }
        break;
        default:
        break;
    }
}

void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}
MainDlg.h
程序代码:
#ifndef _MAIN_H
#define _MAIN_H

#include <windows.h>

BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void Main_OnClose(HWND hwnd);

#endif




梅尚程荀
马谭杨奚







                                                       
2012-04-08 11:26
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 26楼 有容就大
呵呵,有资源文件的Win32 C,MFC程序都可以用第三方软件,资源修改器进行修改,例如:Reshacker。
即使没有源文件都可以的。

看来你被如鹏的视频给弄晕了。。。没有明白对话框程序和普通窗口程序的区别和本质。UpdateWindow()函数没有在对话框程序里看到,并不表示没有被调用过,说白了,对话框程序处理的内部和普通窗口程序是一样的,只不过原来由你写的普通窗口过程微软写好封装在内部了,所以简化了程序的编写,而资源文件就象一个脚本,引导着windows如何去创建主窗口和子窗口控件罢了。如果你有试过在普通窗口下面创建控件就会明白这点。对话框窗口过程不能处理WM_PAINT消息么?可以的,这才是本质,我们UpdateWindow()调用不过是向主窗口发送一个WM_PAINT消息而矣,只能用这个函数刷新么?不是,还有InvalidateRect(),Invalidate()函数也可以发送这个消息。

如果你没有下面这本偶整理的一本书,学习那个视频不会看到本质上的一些东西。
http://
TechWin95.rar

把书里的关于消息分流这部分拿来读读,回头再看这些视频吧。

[ 本帖最后由 hellovfp 于 2012-4-8 12:06 编辑 ]

我们都在路上。。。。。
2012-04-08 11:48
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
慢慢来吧,学得差不多的话,偶可以给你一个另类的示例,用数据结构进行win32 编程。

我们都在路上。。。。。
2012-04-08 11:51
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
哇塞 你给的这本书很好啊 貌似绝版呢

我现在专攻WINDOWS编程 同时看下数据结构 不过进度比较慢啊
谢谢hello  大哥的指导
By the way
What is the meaning of 'vfp'?

梅尚程荀
马谭杨奚







                                                       
2012-04-08 12:36
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
回复 29楼 有容就大
嘿嘿,是绝版的书喽,网上基本找不到下载的,也没有书可以买的。
目前世面上唯一一本讲解消息分流器的书。《windows程序设计》这本也没有讲这个。
学习进度嘛,自己掌握,又不是赶着出面包,不急。有疑问大家会帮助你的。

vfp就是visual foxpro,一个老的程序语言了,其实是个好语言,现在用的人已经不多了,Tong老大还在用。

[ 本帖最后由 hellovfp 于 2012-4-8 13:05 编辑 ]

我们都在路上。。。。。
2012-04-08 12:48
快速回复:[名词解释] 什么叫API
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060282 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved