c调用api打开文件对话框
#include <windows.h>
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd )
{
OPENFILENAME ofn;
//在内存中开辟一块空间,存放用户选取的文件名
char szFile[MAX_PATH];//MAX_PATH是系统定义的一个宏值为260,Windows操作系统文件路径的最大长度
ZeroMemory(&ofn,sizeof(ofn));//将这个结构体变量定义为0
ofn.lStructSize = sizeof(ofn);//获取结构体的大小
ofn.lpstrFile = szFile;//szFile是一个字符数组,那么szFile这个名字就代表这个字符数组的首地址这是一个指针的应用,把接收选择文件名的数组的地址传递到GetOpenFileName函数中。
ofn.lpstrFile[0] = TEXT('\0');//效果等价于ZeroMemory(szFile,sizeof(szFile));
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = TEXT("所有文件(*.*)\0*.*\0Text(*.TXT)\0*.TXT\0");
ofn.nFilterIndex = 1;//默认选择的过滤器,索引从1开始
// 指向接收选择的文件的文件名和扩展名的缓冲(不带路径信息)。这个成员可以是NULL。
ofn.lpstrFileTitle = NULL;
//指定lpstrFileTitle缓冲的大小,以TCHARs为单位。对于ANSI版本,是字节的个数;对于Unicode版本,是字节的个数。如果lpstrFileTitle是NULL,这个成员被忽略。
ofn.nMaxFileTitle = 0;
//指向以空字符结束的字符串,可以在这个字符串中指定初始目录。
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;//OFN_PATHMUSTEXIST路径必须存在,OFN_FILEMUSTEXIST文件必须存在
if (GetOpenFileName(&ofn))
{
MessageBox(NULL,szFile,"",MB_OK);
}
return 0;
}
相关文档:
本文摘自I18nGuy
主页的一篇内容,原文地址:http://www.i18nguy.com/unicode/c-unicode.zh-CN.html
这份文档简要的说明了如何修改你的C/C++代码使之支持Unicode。在这里并不准备
解释太多相关的技术细节并且我得假定你已经基本熟悉Microsoft支持Unicode的方式。
它的主要目的是方便你查询相关的数据类型和函数,以及修 ......
这种需求很多,又因为C++和C是两种完全不同的编译链接处理方式,所以要稍加处理.总结大致有两大类实现方法.
文中给出的是完整的,具体的,但又最基本最简单的实现,至于理论性的东西在网上很容易搜索的到.
一.通过处理被调用的C头文件
a.h:
#ifndef __A_H
#define __A_H
#ifdef __cplusplus
extern "C" {
#endif
int Th ......
编译:C程序直接编译成标准的二进制可执行的代码,但C#的源程序并不是被编译成二进制可执行的形式,而是一种中间语言(MSIL),类似JAVA中的字节码
结构体:C#的结构体与C++的结构体相似。但是C#的结构体与类是不同的,而且不支持继承。
预编译:C#中存在预编译的指令支持条件编译,警告,错误报告和编译行控制。其指令 ......