c++中的工程类型问题

怎么把Win32 Console application中的简单程序(控制台界面程序)放在
win32 application(窗口)下运行。
最好给个例子(不要hello world,带点运算,有Win32 Console application下的,有转换好的)有讲解和注释的
(先给80,答案好的话,追0-100分)
如何在窗口中搜寻文件的路径,比如word中的“文件”菜单下的“打开”,回答好了追给你100分

在“文件”菜单上,单击“新建项目”。

出现“新建项目”对话框。该对话框列出 Visual C# 速成版可以创建的不同默认应用程序类型。

选择“控制台应用程序”作为项目类型,并将应用程序的名称更改为“列出文件”。

默认位置应是恰当的,但您始终可以根据需要输入新路径。

单击“确定”。

Visual C# 速成版为您的项目创建一个以项目标题命名的新文件夹,然后打开 Visual C# 速成版 主窗口,包括代码窗格,您将在其中输入和编辑构成应用程序的 C# 源代码。

注意窗口顶部的工具栏。该工具栏包含各种图标,用于创建、加载和保存项目、编辑源代码、生成应用程序以及隐藏和显示构成 Visual C# 速成版环境的其他窗口。该工具栏的最右端的五个图标用来打开重要的窗口,如“解决方案资源管理器”和“工具箱”。将鼠标指针放在其中任一图标上可获取弹出工具提示帮助。

注意
书签使您可以从源代码中的一个位置快速跳转到另一位置,因此它对于编写大型程序很有用。要创建书签,请单击“切换书签”图标或按 Ctrl+B+T。边距中会显示一个青色标记。使用同样的过程可删除现有的书签。您可以创建任意数量的书签,并且可以使用“下一个”和“上一个”书签图标或按 Ctrl+B+N 和 Ctrl+B+P 在它们之间跳转。

确保“解决方案资源管理器”是可见的,方法是单击屏幕右端的“解决方案资源管理器”选项卡或工具栏中的“解决方案资源管理器”图标。

“解决方案资源管理器”是非常有用的窗格,因为它显示构成项目的各种文件。该项目中最重要的文件是“Program.cs”文件,它包含应用程序的源代码。

如果希望使 Visual C# 速成版的显示保持美观整洁,了解如何打开和隐藏“解决方案资源管理器”之类的窗口非常重要。默认情况下,“解决方案资源管理器”是可见的。如果要隐藏“解决方案资源管理器”,请单击其标题栏中的“自动隐藏”图标(图钉图标),或打开“解决方案资源管理器”标题栏中的“选项”菜单并启用“自动隐藏”。其他窗口(如“类视图”和“属性”)也有这些图标。

在“代码编辑器”中键入类名“Console” 。

如果“解决方案资源管理器”仍挡住“代码”窗格,请在“代码”窗格中单击一次以隐藏“解决方案资源管理器”。现在单击 Main 方法内的左大括号 ({) 的右边,然后按 Enter 键开始新行。注意编辑器如何自动缩进光标。

注意
“代码编辑器”始终尝试将代码格式保持为标准的、易于阅读的布局。如果代码开始显得杂乱,您可以重新格式化整个文档,方法是单击“高级”,然后单击“编辑”菜单中的“设置文档格式”,或者按 Ctrl+E+D。

键入 C# 类名或关键字时,您可以选择:自行键入完整的单词,或者让 IntelliSense 工具(“代码”窗格的一部分)帮您完成。例如,当键入“c”时,将显示单词的弹出列表,因为 IntelliSense 尝试预测您要键入的单词。在这种情况下,您将看不到刚才显示的单词“Console”,因此要么向下滚动列表,要么继续键入单词“console”。当“console”在列表中突出显示时,按 Enter 或 Tab,或者双击它,Console 将添加到代码中。

使用 IntelliSense 的好处是可以保证大小写和拼写是正确的。键入代码还是让 IntelliSense 帮您完成,完全由您决定。

键入一个句点和方法名 WriteLine。

在 Console 后键入句点时,将立即显示另一个 IntelliSense 列表。该列表包含属于 Console 类的所有可能的方法和属性。您需要 WriteLine 方法,并且应该能够在列表的底部看到它。自行完成键入 WriteLine 或按向下键以选择它,然后按 Enter 或 Tab 或双击它。WriteLine 将添加到代码中。

键入左括号。您将立即看到 IntelliSense 的另一项功能 — 方法签名,它显示为工具提示消息。在本例中,您可以看到 19 个不同的签名,并可以通过单击向上键和向下键浏览它们。

键入字符串“该程序列出目录中的所有文件。”

键入引号内的消息,并添加一个右括号。您将看到显示一条红色波浪下划线,提醒您缺少某些符号。键入一个“分号” (;),下划线将消失。

完成程序。

键入或复制并粘贴以下代码来完成程序:

C#
复制代码
static void Main(string[] args) { Console.WriteLine("This program lists all the files in the directory:"); System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\"); foreach (System.IO.FileInfo file in dir.GetFiles("*.*")) { Console.WriteLine("{0}, {1}", file.Name, file.Length); } Console.ReadLine(); }
程序中的最后一行是 Console.ReadLine();,它使程序在按 Enter 键之前暂停。如果省略此行,命令行窗口将立即消失,您将看不到程序的输出。如果您正在创建始终从命令行控制台中使用的命令行实用工具,可能需要省去对 ReadLine() 方法的调用。

运行程序。

现在您的第一个程序已完成,可以编译和运行了。要执行此操作,请按 F5 或单击工具栏中的“开始”图标。

在程序编译和运行后,将打开“控制台”窗口,并显示文件及其大小的列表。按 Enter 键退出该程序。

如果您不熟悉 C# 编程,阅读 C# 语言入门(Visual C# 速成版)一节并试验某些语言示例会是一个好方法。如果希望了解关于 Visual C# 速成版 开发环境和如何创建 Windows 应用程序的更多信息,请继续到下一节如何:创建 C# Windows 应用程序。

在下面的具体陈述中可以看到,在确定要查找的文件名和要进行搜索的目录的名称后,将调用函数Search_Directory进行文件的查找。首先依次查找当前目录下的每一个实体(文件或是子目录),如果是某一子目录,则进入该子目录并递归调用函数Search_Dirctory进行查找,查找完毕之后, 再返回上一级目录;如果不是子目录而是某一文件,则判断其是否就是我们要查找的文件,如果是则输出其完整的文件路径。这样,通过Search_Directory函数的反复递归调用,就可以实现对整个目录,包括子目录的遍历搜索。下面将举例详细讲述如何在VC++中编程实现在整个目录树中的文件查找。

1.在Visual C++ 6.0(VC++ 5.0与之类似)中用默认方式创建了一基于对话框的应用程序Search。在主窗口对话框上放置一命令按钮,其Caption为“Search File”,ID为ID―BUTTON―SEARCH。单击此按钮将完成文件的查找工作。

2.利用ClassWizard为“Search File”按钮的BN_CLICKED 事件添加处理函数OnButtonSearch,代码如下:

#include 〈direct.h〉

#include 〈io.h〉

......

void CSearchDlg::OnButtonSearch()

{

// TODO: Add your control notification handler code here

char szFilename[80];

// 字符串 szFilename 表示要查找的文件名

strcpy(szFilename,〃Mytext.txt〃);

_chdir(〃d:\\〃); // 进入要查找的路径(也可为某一具体的目录)

// 查找文件, 如果查到则显示文件的路径全名

Search_Directory(szFilename);

// 为CSearchDlg类的一成员函数

MessageBox(〃查找文件完毕!〃);

// 显示查找完毕的信息

}

3.在CSearchDlg类中增加成员函数Search_Directory,它将完成具体的文件查找工作,代码如下:

void CSearchDlg::Search_Directory(char* szFilename)

{

long handle;

struct _finddata_t filestruct;

//表示文件(或目录)的信息

char path_search[_MAX_PATH];

//表示查找到的路径结果

// 开始查找工作, 找到当前目录下的第一个实体(文件或子目录),

// 〃*〃表示查找任何的文件或子目录, filestruct为查找结果

handle = _findfirst(〃*〃, &filestruct);

// 如果handle为-1, 表示当前目录为空, 则结束查找而返回

if((handle == -1)) return;

// 检查找到的第一个实体是否是一个目录(filestruct.name为其名称)

if( ::GetFileAttributes(filestruct.name) & FILE―ATTRIBUTE―DIRECTORY )

{

// 如果是目录, 则进入该目录并递归调用函数Search_Dirctory进行查找,

// 注意: 如果目录名的首字符为′.′(即为〃.〃或〃..〃), 则不用进行查找

if( filestruct.name[0] != ′.′ )

{

―chdir(filestruct.name);

Search_Directory(szFilename);

// 查找完毕之后, 返回上一级目录

―chdir(〃..〃);

}

}

else // 如果第一个实体不是目录, 则检查是否是要查找的文件

{

// stricmp对两字符串进行小写形式的对比, 返回为0表示完全一致

if( !stricmp(filestruct.name, szFilename) )

{

// 先获得当前工作目录的全路径

―getcwd(path_search,―MAX―PATH);

// 再获得文件的完整的路径名(包含文件的名称)

strcat(path_search,〃\\〃);

strcat(path―search,filestruct.name);

MessageBox(path_search); //输出显示

}

}

// 继续对当前目录中的下一个子目录或文件进行与上面同样的查找

while(!(―findnext(handle,&filestruct)))

{

if( ::GetFileAttributes(filestruct.name) & FILE―ATTRIBUTE―DIRECTORY )

{

if(*filestruct.name != ′.′)

{

―chdir(filestruct.name);

Search_Directory(szFilename);

―chdir(〃..〃);

}

}

else

{

if(!stricmp(filestruct.name,szFilename))

{

―getcwd(path―search,―MAX―PATH);

strcat(path_search,〃\\〃);

strcat(path_search,filestruct.name);

MessageBox(path_search);

}

}

}

―findclose(handle);

// 最后结束整个查找工作
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-07-23
控制台程序有窗口,可以把值输出到窗口上,而application没有窗口,必须自己编写程序
做一个窗口,做窗口的主要过程就是:
1:设计窗口类
2:注册窗口类
3:创建窗口
4:显示窗口
5:消息循环,下面给你一个计算一元二次方程的例子:
#include<windows.h>
char lpszFilePath[MAX_PATH] = {0};
BROWSEINFO bi;
bi.hwndOwner = this->GetSafeHwnd();
bi.pidlRoot = NULL;
bi.pszDisplayName = lpszFilePath;
bi.lpszTitle = _T("请选择图片目录:");
bi.ulFlags = 0; //BIF_NEWDIALOGSTYLE;
bi.lpfn = NULL;
bi.lParam = NULL;
//SHBrowseForFolder:打开文件对话框
LPITEMIDLIST lpil = SHBrowseForFolder(&bi);
#include<math.h>
#include<stdio.h>
#include<iostream.h>
const double dboffset = 0.000001 ;
char str[80];
//求一元二次方程的根,函数返回根的个数
int GetRoot(float a ,float b ,float c,double *root)
{
double delta,deltasqrt ;
delta = b*b -4.0 * a *c ;
//判断delta是否为正数
if(delta -dboffset < 0.0) return 0 ; //无根
//开平方
deltasqrt = sqrt(delta) ;
if ((a - dboffset) > 0.0)
{
root[0] =(-b+deltasqrt)/(2 * a) ;
root[1] =( -b-deltasqrt)/(2 * a) ;
}
else
if ((a - dboffset) > 0.0)
root[0]=root[1]=-c/b;
else
return 0;

if(root[0] == root[1])
return 1 ;
else
return 2 ;

}
//声明窗口过程函数
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
//程序入口函数
int WINAPI WinMain(HINSTANCE hInstance , //当前实例句柄
HINSTANCE hPreInstance , //以前的实例句柄
LPSTR lpCmdLine , //指向命令行参数的指针
int nCmdShow) //窗口的显示状态
{

//*************************************************************
HWND hwnd ; //窗口句柄
MSG msg ; //消息
WNDCLASS wndclass ; //窗口类
//设置窗口样式
wndclass.style =CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc =WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.hInstance =hInstance ;
wndclass.cbWndExtra = 0 ;
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName ="HelloWin";
//注册窗口类
if (!RegisterClass (&wndclass))
{
MessageBox(NULL,"窗口注册失败","窗口注册失败",0);
return 0 ;
}
//创建窗口
hwnd = CreateWindow( "HelloWin", //窗口类名
"我的窗口", //窗口标题
WS_OVERLAPPEDWINDOW, //窗口样式
CW_USEDEFAULT, //窗口最初X位置
CW_USEDEFAULT,
CW_USEDEFAULT, //窗口最初的X大小
CW_USEDEFAULT,
NULL, //父窗口的句柄
NULL, //窗口菜单句柄
hInstance, //应用程序实例句柄
NULL); //创建窗口的参数
//显示窗口
ShowWindow(hwnd,nCmdShow);
//更新窗口,包括窗口的客户区
UpdateWindow(hwnd);
//显示窗口
ShowWindow(hwnd,nCmdShow);
//更新窗口,包括窗口的客户区
UpdateWindow(hwnd);
//*************************************************************
//进入消息循环
while(GetMessage(&msg,NULL,0,0))
{
//翻译消息(例如转换某些键盘消息)
TranslateMessage(&msg);
//将消息发送给窗口过程,这里是WndProc
DispatchMessage(&msg);
}
return msg.wParam ;
}

//窗口过程函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
static HWND hwndButton ,hwndEdit[3] ;
char strEdit[80];
double root[2];
float a[3];
int i ;
switch(message)
{
//窗口创建产生的消息
case WM_CREATE:
//创建编辑框“edit”是windows内部定义的编辑框的窗口类名
hwndEdit[0] = CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,10,60,100,25,hwnd,NULL,NULL,NULL);
hwndEdit[1] = CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,120,60,100,25,hwnd,NULL,NULL,NULL);
hwndEdit[2] = CreateWindow("edit",NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,230,60,100,25,hwnd,NULL,NULL,NULL);
hwndButton = CreateWindow("button","计算",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,340,60,100,25,hwnd,NULL,NULL,NULL);
return 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 ;
case WM_LBUTTONDOWN:
MessageBox(NULL,"你好啊","问候",0);
return 0 ;
case WM_COMMAND:
//按下按钮
if(((HWND)lParam ==hwndButton) && (HIWORD(wParam) ==BN_CLICKED))
{
//获取3个编辑框内容,并将其转换成浮点数值
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]);
InvalidateRect(hwnd,NULL,TRUE);
}
}
return DefWindowProc(hwnd,message,wParam,lParam);
}本回答被提问者采纳

你好,我拜读了你一个c++程序,但是调试出错,能帮忙么?谢啦
建项目的时候项目类型选错了,应该选择Win32 Console Application,而不是Win32 Application。建好的工程,也可以直接修改工程类型 菜单:Project->Setting->Link 选项卡,在下面的Project Options框里,把\/subsystem:windows 改为\/subsystem:console ,如图:...

C++工程中包含头文件的问题
C++工程中包含头文件的问题:1:如果有共同相关依赖(必须include)的类,比如A,B都依赖D可以放在一起,然后直接Include “d”类的使用者只需关心与本类暴露出的相关类型,内部用到的类型不用去管(不用自已去include d)。这样 给出的class,调用者才更好用(不用去看代码查找,是不是还需要包含其它...

在开发大C++工程的时候如何判断和避免循环include?
回答:这里面最重要的是细节部分,和代码结构问题。 结构问题: 1.代码结构来自于代码组织的更大范围。提 2.倡拆除许多小的班级。扩展到多个文件。文件中并非全部。 3.这很容易说,现实中或多或少会有违法行为。例如,工程需要使用一些常量字符串(或消息的定义,或枚举值,并有多个变种)。 使用方法: 1....

c++中的工程类型问题
1.在Visual C++ 6.0(VC++ 5.0与之类似)中用默认方式创建了一基于对话框的应用程序Search。在主窗口对话框上放置一命令按钮,其Caption为“Search File”,ID为ID―BUTTON―SEARCH。单击此按钮将完成文件的查找工作。 2.利用ClassWizard为“Search File”按钮的BN_CLICKED 事件添加处理函数OnButtonSearch,代码如下: ...

c++执行 link.exe 时出错.怎么回事呀?
是建错了工程类型。如果只是单纯要编译一个cpp文件的话,工程类型应该选择Console程序而不是Win32程序,否则应该使用WinMain()入口函数而不是main()。工程应该选择Win32 Console Application而不是Win32 Application,或者应该把Project Options的参数改成\/subsystem:console。

C++编程遇到的菜鸟问题
看这个错误提示:LINK : error LNK2001: 无法解析的外部符号 _mainCRTStartup,表示编译是没有问题,也就是说语法是正确的。错误是发生在link阶段,再看这个:“无法解析的外部符号 _mainCRTStartup”, 表示它不识别你的主函数main,由此可以判断,错误出在了你建立的工程上,你应该建立一个控制台应用...

C语言运行时的问题
你应该是使用VC++6.0 error LNK2001 这个应该是工程类型选择有误所致。在新建工程时应该选择Win32 Console Application.或者直接新建一个 C++ Source File ,编写代码完成后接下 F5键 在接下来的所有对话框中都点击"yes"即可运行 。

c++builder6.0 中类型转换问题
这是由于你使用IntToHex的参数不对,缺少第二个参数,输出多少位,这个函数的原型是IntToHex(int Value, int Digits) 。

一起学 C++ Primer(八)类型转换(一)
首先,当不同类型的值进行赋值或初始化时,C++会将值转换为接收变量的类型。例如,将short的thirty赋给long的so_long时,程序会扩展thirty的值,保持thirty不变,但将值扩展到long的范围。类型转换也可能引发问题。将short赋给float可能会丢失精度,而将大数值赋给较小类型可能无法存储。例如,将3.9832...

我每次运行c++时总是连接时出错,代码绝对没错。但无法连接
\/SUBSYSTEM:CONSOLE 当然你也可以新建一个项目,项目类型为控制台应用程序,这样就需要重新构建工程内容。问题的原因在于VC可构建两种类型程序:GUI和CUI。GUI就是我们常见的窗口程序;而CUI是控制台程序,启动它会创建一个命令提示符窗口。通过VC链接器的subsystem开关可以设置该类型,windows为GUI程序,console...

相似回答