永发信息网

如何在Visual C++ 6.0中开发驱动程序

答案:2  悬赏:30  手机版
解决时间 2021-05-09 12:09
我非常喜欢VC6.0这个IDE,所以想告别记事本在他里面学习开发驱动,我现在用的是最新的WDK。请问怎么设置?我也有Visual studio 2008的
最佳答案

在visual C++ 6.0 环境下编写C++程序需要经过建工程、建文件两个步骤。
按照如下进行,细心,就可以:

先建一个运行程序的工程。
1.打开visual C++ 6.0,
2.在菜单栏里选 文件/新建(File/new),
3.选择Win32 Console Application,
4.输入工程名Projectname(随便起),
5.选择程序保存目录Location, @@@@@@@@@@@@这就是保存路径!
6.ok
7.Finish
8.ok

再建一个文件c++资源文件
9.在菜单栏里选 文件/新建(File/new),
10.选择C++ Source File,
11.填文件名File,
12.存储路径默认, @@@@@@@@保存路径和工程路径相同
13.ok

在C++ Source File中输入代码,编辑完毕后。
14.点击编译器右中上角的编译图标(在像感叹号一样的图标左侧),编译时顺便查错...
15.运行(点像感叹号一样的图标)。


示例:下面有一段伪代码演示如何在窗口过程中处理消息

LONG yourWndProc(HWND hWnd,UINT uMessageType,WPARAM wP,LPARAM)
{
switch(uMessageType)
{//使用SWITCH语句将各种消息分开
case(WM_PAINT):
doYourWindow(...);//在窗口需要重新绘制时进行输出
break;
case(WM_LBUTTONDOWN):
doYourWork(...);//在鼠标左键被按下时进行处理
break;
default:
callDefaultWndProc(...);//对于其它情况就让系统自己处理
break;
}
}


接下来谈谈什么是消息机制:系统将会维护一个或多个消息队列,所有产生的消息都回被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务。下面的伪代码演示了消息循环的用法:

while(1)
{
id=getMessage(...);
if(id == quit)
break;
translateMessage(...);
}

当该程序没有消息通知时getMessage就不会返回,也就不会占用系统的CPU时间。 下图为消息投递模式




在16位的系统中系统中只有一个消息队列,所以系统必须等待当前任务处理消息后才可以发送下一消息到相应程序,如果一个程序陷如死循环或是耗时操作时系统就会得不到控制权。这种多任务系统也就称为协同式的多任务系统。Windows3.X就是这种系统。

而32位的系统中每一运行的程序都会有一个消息队列,所以系统可以在多个消息队列中转换而不必等待当前程序完成消息处理就可以得到控制权。这种多任务系统就称为抢先式的多任务系统。Windows95/NT就是这种系统。



1.3 利用Visual C++/MFC开发Windows程序的优势


MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助)

正因为MFC是建立在C++的基础上,所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。

在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单讲述一下这种方法的实现方法:

代码如下
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
END_MESSAGE_MAP()
经过编译后,代码被替换为如下形式(这只是作讲解,实际情况比这复杂得多):
//BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
CMainFrame::newWndProc(...)
{
switch(...)
{
//{{AFX_MSG_MAP(CMainFrame)
// ON_WM_CREATE()
case(WM_CREATE):
OnCreate(...);
break;
//}}AFX_MSG_MAP
// ON_COMMAND(ID_FONT_DROPDOWN, DoNothing)
case(WM_COMMAND):
if(HIWORd(wP)==ID_FONT_DROPDOWN)
{
DoNothing(...);
}
break;
//END_MESSAGE_MAP()
}
}

newWndProc就是窗口过程只要是该类的实例生成的窗口都使用该窗口过程。

所以了解了Windows的消息机制在加上对消息映射的理解就很容易了解MFC开发的基本思路了。


1.4 利用MFC进行开发的通用方法介绍

全部回答

我这有本电子书,里面有VC6开发驱动的配置过程,你要看我发给你,不过俺是菜鸟没学过驱动开发,也没验证过书的内容。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我的手机连接不上电脑 这是怎么回事
袁家庄镇敬老院地址在哪,我要去那里办事
竟选化学科代表发言稿
吉他是谁造的?
鼻子塞了怎么办呢,都很长时间了,还不好,实
這個世界上有一見中情嗎?
摩托车原来用的是4A电池,现在想更换成6.5A的
那个品牌的电视好
龙佑金属在什么地方啊,我要过去处理事情
我要做个车队QQ飞车的 怎么做
北京市时尚国际栏目组电话号码
双氧水与NO和二氧化氮的反应方程式
求首班歌、立志的、流行点的、Rock、R&B
河南人为啥称馒头为馍呀
文史343分能上贵州商专吗?
推荐资讯
诗歌之王第二季评委,诗歌之王的主创团队
改装黑色车配什么样的轮毂好看
生活中的传统文化节的作文
长得高的人有什么好处与坏处……
公司散伙,所有人都有奖金就我没有,我该怎么
我的CF的ping为何不稳
DELL vostro 1400 机子反应超慢是咋回事?
新兴西路/S296(路口)这个地址在什么地方,我
DNF湖南2有卖50+机械号的吗?
我爱你绝不是说说而已,我喜欢你 不是说说而已
DNF最近还可以买什么活动时装.详细
你觉得你是怎么对待感情的呢?翻译英文
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?