visuall c++编程,怎样为按钮添加单击事件,使其能选择文件
单击按钮后能弹出选择文件对话框,然后选择一个文件确定后能返回这个文件的完整路径名不要mfc的内容,就是win32api编程大致讲解一下吧...
单击按钮后能弹出选择文件对话框,然后选择一个文件确定后能返回这个文件的完整路径名
不要mfc的内容,就是win32 api编程
大致讲解一下吧 展开
不要mfc的内容,就是win32 api编程
大致讲解一下吧 展开
2个回答
展开全部
BOOL OpenFile(HWND hwnd) {
OPENFILENAME ofn;
static char szFile[256];
static char szFileTitle[256];
memset(&ofn,0,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=hwnd;
//ofn.lpstrFilter="Picture File(*.bmp,*.jpg)\0*.bmp;*.jpg;\0\0";
ofn.lpstrFilter="File(*.ctg,*.txt,*.lst)\0*.ctg;*.txt;*.lst;\0\0";
ofn.nFilterIndex=1;
ofn.lpstrFile=szFile;
ofn.nMaxFile=sizeof(szFile);
ofn.lpstrFileTitle=szFileTitle;
ofn.nMaxFileTitle=sizeof(szFileTitle);
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
if(GetOpenFileName(&ofn))
{
string name = szFileTitle;
int i = 0;
int index = -1;
while(true) {
char c = szFileTitle[i];
if (c == '\0') {
break;
}
if (c == '.') {
index = i;
}
i++;
}
if (index != -1){
// 有.
string ext = name.substr(index + 1);
if (ext == "ctg") {
FunOne(hwnd, szFile);
} else {
FunTwo(hwnd, szFile);
}
} else {
// 文件名中没有.
}
} else {
// 点击了取消或者叉叉
MessageBox(hwnd,"You click Cancel!","test",MB_OK);
return FALSE;
}
}
OPENFILENAME ofn;
static char szFile[256];
static char szFileTitle[256];
memset(&ofn,0,sizeof(ofn));
ofn.lStructSize=sizeof(ofn);
ofn.hwndOwner=hwnd;
//ofn.lpstrFilter="Picture File(*.bmp,*.jpg)\0*.bmp;*.jpg;\0\0";
ofn.lpstrFilter="File(*.ctg,*.txt,*.lst)\0*.ctg;*.txt;*.lst;\0\0";
ofn.nFilterIndex=1;
ofn.lpstrFile=szFile;
ofn.nMaxFile=sizeof(szFile);
ofn.lpstrFileTitle=szFileTitle;
ofn.nMaxFileTitle=sizeof(szFileTitle);
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
if(GetOpenFileName(&ofn))
{
string name = szFileTitle;
int i = 0;
int index = -1;
while(true) {
char c = szFileTitle[i];
if (c == '\0') {
break;
}
if (c == '.') {
index = i;
}
i++;
}
if (index != -1){
// 有.
string ext = name.substr(index + 1);
if (ext == "ctg") {
FunOne(hwnd, szFile);
} else {
FunTwo(hwnd, szFile);
}
} else {
// 文件名中没有.
}
} else {
// 点击了取消或者叉叉
MessageBox(hwnd,"You click Cancel!","test",MB_OK);
return FALSE;
}
}
追问
卧槽,别这样啊,至少把关键之处解释一下啊
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-08-25
展开全部
汗~大概大概。。。。。。网上找教程吧,我只知道VB怎么解决。。。。。。
sorry。。
sorry。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询