‘壹’ 请教“无法解析的外部符号”[错误]
其实只要把外部 lib文件在项目属性里面引入,打开 项目属性->链接器->命令行->附加选项 加入了 .lib 再编译,pass
肯定是引用的库文件的问题,而不是像函数没有定义
检查一下引用的库文件
看看包含这些函数的文件是否加到工程文件中!
有可能是函数没有定义,而被引用了。
工程中也许没有加入文件
反正是编译器在你使用它的地方看不到这个函数CGJ::cs的实现。
‘贰’ 怎样定义和引用Mfc 全局变量
用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。
一、在应用程序类中定义
用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。
从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、对话框以及各种自定义类中访问到它们,达到与全局变量类似的效果。访问时用函数“AfxGetApp()”获得CxxxApp类的指针,用“AfxGetApp()->成员”访问变量或函数。
例:
Test.h:(应用程序类头文件)
class CTestApp : public CWinApp
{
public:
int x; //全局变量
int f(int y); //全局函数
…………
};
Test.cpp:(应用程序类程序文件)
int CTestApp::f(int y) //全局函数定义
{
y++;
return y;
}
定义在CTestApp类中的变量和函数可以在其它类中被访问。比如在视图的某函数中要访问变量x和函数f():
void CTestView::xyz()
{
CTestApp *app = (CTestApp *)AfxGetApp(); //生成指向应用程序类的指针
app->x = 0; //访问变量x
int z = app->f(1); //访问函数f()
…………
}
这样,变量x和函数f()可以视作为全局的。
用这种方法实现的全局变量和全局函数虽比较简单,但也有缺点,一是访问不太方便,每次都需要获取应用程序类的指针;再就是把一些与应用程序类本身无关的变量和函数放在里面,使这个类看上去怪怪的,破坏了类的封装。
二、用静态变量和静态函数实现
很喜欢API函数的那种调用方法,不论在哪个类中只要用“::API函数”就可以调用了。合理利用静态类型(static)可以实现与此相似的全局变量和全局函数。
静态变量和静态函数有如下性质:
若在一个类中用关键字static声明数据成员,则这个数据成员就只存在一个拷贝,无论该类创建了多少个实例,它始终只存在一个,即使该类的实例一个也没创建,它也存在。
若在一个类中用关键字static声明函数,该函数可以用“类名::函数名”方式访问,无需引用该类的实例,甚至这个类的实例可以不存在。
利用这个性质实现的全局变量和函数使用起来很方便。
值得注意的是,全局变量和全局函数最好集中封装,不要在文档、视图等类内部定义,这样用起来才有全局的感觉。
例:
1、添加一个没有基类的新类,设类名起为CPublic,姑且称之为公用类
单击“Insert”菜单下的“New Class”命令,选择“Class type”为“Generic Class”,在“Name”栏中填入类名“CPublic”,单击“OK”,则新类建立完毕。
2、包含公用类的头文件,使各个类都能访问它
CPublic的头文件应包含在应用程序类的头文件中,这样在其它类中引用CPublic类时就不需要再包含了。
Test.h:(应用程序类头文件)
#include "Public.h" //包含公用类头文件
class CTestApp : public CWinApp
{
…………
};
3、在公用类中定义全局变量和全局函数,均使用static修饰,静态变量还必须在类外定义和初始化
Public.h:(公用类头文件)
class CPublic
{
public:
CPublic();
virtual ~CPublic();
public:
static int x; //全局变量
static int time; //全局变量
static int f(int y); //全局函数
…………
}
在公用类中对静态变量进行初始化和定义函数体:
Public.cpp:(公用类程序文件)
int CPublic::x = 0; //初始化全局变量
int CPublic::time; //定义全局变量
CPublic::CPublic()
{
}
CPublic::~CPublic()
{
}
int CPublic::f(int y) //全局函数,这里不要再加static
{
y++;
return y;
}
4、全局量的使用
使用变量:CPublic::变量名
使用函数:CPublic::函数()
如在视图的某函数中访问变量x和函数f():
void CTestView::xyz()
{
CPublic::x = 0; //访问变量x
CPublic::time = CPublic::f(1); //访问函数f()
…………
}
在其它类中访问x、time和f()的方法与此相同。
5、几点注意:
① 由于静态量可独立于类存在,不需要生成CPublic类的实例。
② 静态数据成员的定义和初始化必须在类外进行,如例中x的初始化;变量time虽然没有初始化,但也必须在类外进行定义。由于没有生成CPublic类的实例,所以它的构造函数和析构函数都不会被执行,在里面做什么工作都没有什么意义。
③ 如果静态函数需要访问CPublic类内的变量,这些变量也必须为静态的。因为非静态量在不生成实例时都不会存在。 如:
class CPublic
{
public:
int x; //内部变量
static int f(int y) //全局函数
{
x++;
return x;
};
…………
};
这里x虽为类内成员,但如果不生成CPublic类的实例,就会出现函数f()存在,而变量x不存在的问题。
总之,用没有实例的类管理全局量是一个不错的选择,它具有集中管理,使用方便的好处。当然,除非特别必要,全局量还是少用为好,一个好的编程者决不会随意滥用全局量的,一个封装做得不好的程序,在修改维护时会让你吃足苦头。
‘叁’ xp系统 dos注册表恢复命令
1.XP里恢复注册表只能用“系统还原”,把系统恢复成一个较早时间的状态。它的快捷方式一般在“系统工具”下,“帮助和支持”里面也有。
注意它与scanreg不同的是连注册表带系统文件一起恢复,在这期间改动过的文件也会被恢复。这个还原是可以“反悔”的,如没达到目的,可以回到还原前的状态
2.当您的Windows98因注册表问题而无法启动到图形界面时,您此时只有在DOS下使用一些工具软件修复注册表。Windows 98的RegEdit、ScanReg是最合适不过的修复与维护工具软件。
在DOS下使用注册表编辑器
注册表编辑器Regedit.exe其实是一个双栖型的程序,既可在DOS下运行,也可在Windows 98下运行。许多用户可能已经知道在Windows下使用Regedit 的方法,那么,在DOS下如何使用注册表编辑器呢?
在DOS提示符下键入Regedit命令,将出现一个帮助屏,其命令行参数及其使用方法:
语法:
Regedit [/L:system] [/R:user] filename1
Regedit [/L:system] [/R:user] /C filename2
Regedit [/L:system] [/R:user] /E filename3 [regpath]
其中:
/L:system 指定system.dat文件的存放位置。
/L:user 指定user.dat文件的存放位置。
filename1 指定引入注册表数据库的文件名。
/C filename2 指定形成注册表数据库的文件名。
/E filename3 指定导出注册表文件的文件名。
regpath 指定导出注册表文件的开始关键字(缺省为全部关键字)
现举几个例子说明regedit.exe在DOS下的使用方法。
【例1】 将系统注册表数据库registry导出到reg1.reg文件中。
regedit /E reg1.reg
【例2】 reg1.reg形成系统注册表数据库registry(全部)中。
regedit /C reg1.reg
【例3】 将reg.dat引入系统注册表数据库中(部分)。
regedit reg.dat
【例4】 将CGJ开始的关键字导出注册表数据库,并命名为cgj.reg。
regedit /E cgj.reg cgj
【例5】 指定system/dat存放在D:\PWIN中和user.dat存放在E:\PWIN中,将reg.dat数据文件形成一个新的注册表数据库registry。
regedit /L:\PWIN /R:E:\PWIN /C reg.dat
下面介绍当您在启动Windows时出现如图1所示的对话框时,使用RegEdit来恢复注册表的方法。
1.首先在安全模式下导出,然后再引入注册表文件
(1) 关闭计算机后,重新启动,在出现“Starting Windows98”时,按F8键,在启动菜单中选择“Safe mode command prompt only”,则系统进入安全模式。
(2) 执行如下命令:
regedit /l:c:\windows\system.dat /e c:\system.txt (导出注册表)
cd\windows (Windows98系统目录)
attrib -s -h -r system.dat(去掉SYSTEM.DAT的系统、隐含、只读属性)
ren system.dat system.old (将当前的SYSTEM.DAT文件改名)
regedit /l:c:\windows\system.dat /c c:\system.txt (引入注册表)
(3) 重新启动计算机,以正常方式启动Windows98系统,如果错误仍出现,可以在安全模式下使用如下命令:
regedit /l:c:\windows\user.dat /e c:\user.txt (导出注册表)
cd\windows
attrib -s -h -r user.dat(去掉USER.DAT的系统、隐含、只读属性)
ren user.dat user.old (将当前的USER.DAT文件改名)
regedit /l:c:\windows\user.dat /c c:\user.txt (引入注册表)
2.重新启动计算机,以正常方式启动Windows98系统,如果错误仍出现,可以恢复系统至最后一次成功运行时的注册表。
(1) 关闭计算机后,重新启动,进入安全模式。
(2) 执行如下的命令:
cd\windows
attrib -s -h -r system.dat
ren system.dat system.bad
(3) 重新启动Windows98系统,在启动时,系统如果没有发现system.dat文件,就会使用System.da0文件,系统会自动将System.da0文件改名为system.dat。
3.如果仍有启动错误出现,则恢复系统至第一次成功运行时的注册表。
(1)在关闭计算机后,重新启动,进入安全模式。
(2) 执行如下命令:
cd\windows
attrib -s -h -r system.dat
ren system.dat system.xxx
cd attrib -s -h -r system.1st (此文件在启动盘的根目录下,通常在C:\)
system.lst c:\windows\system.dat(使用system.lst替代system.dat)
attrib +s +h +r system.lst (加上属性)
4.重新启动Windows98系统,如果仍有错误发生,再重新安装Windows98系统。
在DOS下使用ScanReg
在DOS下执行ScanReg/?命令,则出现一个帮助信息屏。该屏幕将给出ScanReg的使用方法:
ScanReg /[Option]
其中 ,Option可为?(获取帮助信息)、BACKUP(备份注册表)、RESTORE(恢复注册表)、FIX(修复注册表)、COMMENT(将说明信息加入到备份注册表文件.CAB中)。
例如:
1.在DOS下执行ScanReg /BACKUP,则将注册表备份到.CAB文件中。
2.执行ScanReg /FIX,则修复注册表中的错误。
3.执行ScanReg /RESTORE,则将注册表恢复过
‘肆’ win7旗舰版32激活码
给你一个激活方法你试试看: 官方默认激活法: 说是“官方”默认“激活”方法一点都没错,因为这个方法根本不是真正的激活了我们的windows7,而是让我们的试用时间延长。 具体操作:打开附件—–命令提示符。(注意要使用右键管理员方式运行)。在命令行中输入“slmgr.vbs/rearm”的命令延长使用期30天重启系统后,又恢复到30天。请注意!一定要等到出现提示字样,然后重启系统。 加强版操作:上面的方法3次后,共计120天后,此后将无法再次使用。就要进行下一步,修改注册表中的一处键值,即可重复使用上面的命令,请打开注册表编辑器,依次定位至 “HKEY_LOCAL_orm”。找到右侧窗格中的“SkipRearm”,将其键值修改为“1”,以后就可以再次使用“slmgr.vbs /rearm”的命令,这个键值总共可以修改8次,也就是说我们可以重复使用8次“slmgr.vbs/rearm”的命令。 因此可以免费使用的时间为:初次安装的30天,加slmgr首次的3次90天,然后8次修改注册表的240天。 Win7 竟然可以“免费”使用360天!!(据说这个方法在VISTA刚出的时候就有了) 试试看这个激活方法,试试看吧
‘伍’ 电脑程序乱了怎样弄
●消除应用软件的乱码显示:
在注册表中打开HKEY_LOCAL_ ssociated Charset子键分支,将右边窗口内的“SYMBOL(02)”(这是Windows XP系统的机内码)的数值改为“NO”即可。
●在应用软件中设定字体替换:
使用字处理应用软件时常会碰到这样的情况,当把一台计算机上编辑好的文件拿到其他计算机上打开时,原来的字体发生了变化。原因是两台计算机上所装的字体不同,系统用已按装的字体替换了文件中本机上没有安装的字体。如果指定的替换字体是和原来字体不相似的字体,就会出现文字的混乱,出现不可辨认的字。为了避免这些问题,可以由注册表来进行这种替换。打开HKEY_LOCAL_ 子键分支,可以看到在右边的窗口中有些键值项的键值名是一种字体名,而数值是另一种字体名。则表示当系统中出现键值项名的字体时使用数值中的字体进行替换。如果您想更改替换的字体,双击该键值项,在弹出的对话框中将数值改为您希望的字体名。不过注意,用来替换的字体必须是“控制面板”中“字体”中存在的字体,并且字体名字符串中间的空格必须正确。
●加入可运行的程序后缀:
在Windows XP系统中,后缀为.com、.exe、.bat、.pif、.cmd的程序都可以运行。如果要添加其他可运行的程序后缀,如.cgj,则在注册表编辑器中打开HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindows子键分支,在右边的窗口中Programs键值项数据后面加上“cgj”即可。
●应用软件中长短文件名转换问题:
Windows XP中支持长文件名,为文件起名不必再受DOS的格式限制。但是在Windows XP中的DOS窗口下使用DIR命令查看文件名时,但文件名超过8个字符时会被自动截取前面的部分并在后面加上一个“~”和一个数字。这是为了和DOS兼容,Windows XP为长文件名自动生成的8.3格式短文件名。这种生成的方法可以通过修改注册表来改变,使得生成的短文件名尽可能和原文件名保持一致,打开HKEY_LOCAL_子键分支,在右边的窗口中新建一个二进制的键值项数据“NameNumericTail”,将其值改为00 。重启后Windows XP的DOS窗口下显示的文件名就会尽可能接近长文件名,易于区别又绝不相同。
●改变字体关联:
在Windows XP中偶尔会碰到应用软件字体不能正常显示的问题。出现这种情况有可能是Windows XP中应用软件的字体关联有误。如果字体已经正常安装,可能就是注册表中的字体关联出错。打开HKEY_LOCAL_子键分支,该子键下应该有三个子键,Associated CharSet、Associated DefaultFonts和Associated Fonts。如果汉字软件出现乱码,通常是Associated DefaultFonts子键下的内容不完整,这里是该子键下的所有键值名和值。
其中的“新宋体”处也可以是“宋体”。另外,在Associated CharSet中指定了一些字符集的应用与否。键值名为字符集的名字,值可以为“yes”或“no”。如果英文软件在中文Windows XP下出现乱码。可以尝试把GB2312(86)的值改为“no”,重启生效。
●增加应用程序的可执行文件路径:
如果需要运行的程序不在指定的目录中,则DOS系统一般采用在自动批处理文件Autoexec.bat中设置路径的方法来达到自动寻找此程序的目的。而在Windows XP中,用户可以更秘密地增加应用程序路径,而不是通过设置自动批处理的方式,这就需要修改注册表。
比如要增加路径的可执行文件为“F:downloadprogram filesaports14active portsaports.exe”,在注册表中打开HKEY_LOCAL_CurrentVersionApp Paths子键分支,在其下新建一个子键“aports.exe”,将其默认值改为F:downloadprogram filesaports14active portsaports.exe,再在该子键下新建一个子键“Path”,将其值改为“F:downloadprogram filesaports14active ports”。这样,就可以通过在“运行”命令行中键入“aports.exe”或“aports”来直接运行该程序了。
‘陆’ 1602显示ad转换值后面多出四位乱码
●应用软件设定字体替换: 使用字处理应用软件碰情况台计算机编辑文件拿其计算机打原字体发变化原两台计算机所装字体同系统用已按装字体替换文件本机没安装字体指定替换字体原字体相似字体现文字混乱现辨认字避免些问题由注册表进行种替换打HKEY_LOCAL_ 键支看右边窗口些键值项键值名种字体名数值另种字体名则表示系统现键值项名字体使用数值字体进行替换您想更改替换字体双击该键值项弹框数值改您希望字体名注意用替换字体必须控制面板字体存字体并且字体名字符串间空格必须确 ●加入运行程序缀: Windows XP系统
缀.com、.exe、.bat、.pif、.cmd程序都运行要添加其运行程序缀.cgj则注册表编辑器打HKEY_CURRENT_USERSoftwareMicrosoftWindows NTCurrentVersionWindows键支右边窗口Programs键值项数据面加cgj即 ●应用软件短文件名转换问题: Windows XP支持文件名文件起名必再受DOS格式限制Windows XPDOS窗口使用DIR命令查看文件名文件名超8字符自截取前面部并面加~数字DOS兼容Windows XP文件名自8.3格式短文件名种通修改注册表改变使短文件名尽能原文件名保持致打HKEY_LOCAL_键支右边窗口新建二进制键值项数据NameNumericTail其值改00 重启Windows XPDOS窗口显示文件名尽能接近文件名易于区别绝相同 ●改变字体关联: Windows XP偶尔碰应用软件字体能显示问题现种情况能Windows XP应用软件字体关联误字体已经安装能注册表字体关联错打HKEY_LOCAL_键支该键应该三键Associated CharSet、Associated DefaultFontsAssociated Fonts汉字软件现乱码通Associated DefaultFonts键内容完整该键所键值名值
其新宋体处宋体另外Associated CharSet指定些字符集应用与否键值名字符集名字值yes或no英文软件文Windows XP现乱码尝试GB2312(86)值改no重启效 ●增加应用程序执行文件路径: 需要运行程序指定目录则DOS系统般采用自批处理文件Autoexec.bat设置路径达自寻找程序目Windows XP用户更秘密增加应用程序路径通设置自批处理式需要修改注册表 比要增加路径执行文件F:downloadprogram filesaports14active portsaports.exe注册表打HKEY_LOCAL_CurrentVersionApp Paths键支其新建键aports.exe其默认值改F:downloadprogram filesaports14active portsaports.exe再该键新建键Path其值改F:downloadprogram filesaports14active ports通运行命令行键入aports.exe或aports直接运行该程序
#include<reg52.h>
#include "delay.h"
#include "1602.h"
#include <string.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char usercount[4]=0;
char k=0;
#define maxitem=3;
uchar code Table[]="welcome my menu!";
struct menushow
{
unsigned char array1[13];
unsigned char array2[13];
unsigned char array3[13];
}*show[4];
void write_com(uchar com)
{
delay_nus(80);
lcdrs=0;
lcdrw=0;
P1=com;
lcden=1;
delay_nus(1);
lcden=0;
}
//写数据
void write_data(uchar date)
{ // LCD_Status();
lcdrs=1;
lcdrw=0;
P1=date;
lcden=1;
delay_nus(1);
lcden=0;
}
void write_onechar(uchar X, uchar Y ,uchar DData)
{
Y &= 0x1;
X &= 0xF; //限制X能于15Y能于1
if (Y) X |= 0x40; //要显示第二行址码+0x40;
X |= 0x80; // 算指令码
write_com(X); //检测忙信号发送址码
write_data(DData);
}
void write_string(uchar X, uchar Y, uchar code *DData) //写字符串 位置行数字符串
{
uchar b=0;
while (DData[b]>'\0') //若达字串尾则退
{
write_onechar(X++, Y, DData[b++]); //显示单字符
if(X==16)
{X=0;Y^=1;}
}
}
//初始化
void init()
{
lcden=0;
write_com(0x38);
delay_nus(1);
write_com(0x38);
delay_nus(1);
write_com(0x38);
delay_nus(1);
write_com(0x38);
write_com(0x08);
write_com(0x01);
write_com(0x0c);
write_com(0x06);
// write_com(0x80+0x03);
// write_com(0x80+0x40);
}
void showinit()
{
show[4]=(struct menushow*)malloc(sizeof(struct menushow));
strcpy(show[0]->array1,"1.imscb");
strcpy(show[0]->array2,"2.imscb");
strcpy(show[0]->array3,"3.imscb");
strcpy(show[1]->array1,"1.imscb");
strcpy(show[1]->array2,"2.imscb");
strcpy(show[1]->array3,"3.imscb");
strcpy(show[2]->array1,"1.imscb");
strcpy(show[2]->array2,"2.imscb");
strcpy(show[2]->array3,"3.imscb");
strcpy(show[3]->array1,"1.imscb");
strcpy(show[3]->array2,"2.imscb");
strcpy(show[3]->array3,"3.imscb");
}
void main()
{
int j=0;
P1=0;
init();
showinit();
write_com(0x40);
write_string(0,0,Table);
delay_nms(80);
write_com(0x01);
write_string(0,0,(*show[0]).array1);
write_string(0,1,(*show[0]).array2);
while(1)
{
}
}
‘柒’ 如何在注册表重新启动系统还原
应该不可以的吧~~打开注册表的方法是:regedit
‘捌’ 股票交易软件如何操作 详细一点
股票交易软件如何操作:股票交易软件的使用:1、下载股票交易软件。从网上下载一个证券交易软件,建议选个大券商的操作系统。由于这些软件都是免费下载的,所以我们不用花半毛钱就能使用这些操作系统。下载完毕后按提示进行安装即可。2、开通股票账户。如果已经开通了股票账户,那么在对应的交易软件的登录界面输入自己的客户编号、交易密码和附加码就可直接登录。如果你还没有开通股票账户也没关系,选择登录界面的“浏览行情”选项便可进入系统了。3、选择感兴趣的股票。选中想要查看的股票,如果忘记了代码也没关系,输入股票名称的首字母缩写也可直接找到想看的股票。4、根据自身实际情况操作,买入或是卖出等操作。