关于GetOpenFileName和GetSaveFileName的问题 GetSaveFileName问题

\u5173\u4e8eGetOpenFileName\u548cGetSaveFileName\u51fd\u6570\u7684\u95ee\u9898

\u533a\u522b\u5c31\u662f\u4e00\u4e2a\u662f"GetOpenFileName"\u4e00\u4e2a\u662f"GetSaveFileName"
\u5f88\u660e\u663e\u54e6,\u4e00\u4e2a\u662f\u5b8c\u6210\u6253\u5f00\u64cd\u4f5c\u540e\u8fd4\u56de\u4fe1\u606f,\u53e6\u4e00\u4e2a\u662f\u5b8c\u6210\u4fdd\u5b58\u64cd\u4f5c\u540e\u8fd4\u56de\u4fe1\u606f.

\u76f4\u63a5\u4f7f\u7528ofn.lpstrFileTitle \u548c ofn.nMaxFileTitle \u5373\u53ef\u3002

\u53e6\u5916\uff0c\u4f7f\u7528ofn.lpstrFile\u65e0\u6cd5\u89e3\u6790\u51fa\u6587\u4ef6\u540d\u662f\u4e0d\u53ef\u80fd\u7684\uff0c\u53ef\u4ee5\u8bd5\u8bd5\u4e0b\u9762\u7684\u529e\u6cd5\uff1a
1.\u8bf7\u786e\u8ba4opf.lpstrFile = "c:\\tmp\\test.txt", \u4e5f\u5c31\u662f\u8bf4\u53bb\u6389\u8f6c\u4e49\u7b26\u540e\u7684c:\tmp\test.txt
2.*p=='\\\\'\uff0c\u8fd9\u4e2a\u5f88\u5947\u602a\uff0c\u8fd9\u4e48\u591a\\u4e00\u822c\u4e0d\u662f\u5b57\u7b26\u4e32\u4e86\u5417\uff1f\u5982\u679c\u786e\u8ba41\u540e\u8fd8\u65e0\u6cd5\u89e3\u51b3\uff0c\u90a3\u4e48\u4ec5\u4fee\u6539.*p=='\\\\'\u5e94\u8be5\u5c31\u53ef\u4ee5\u67e5\u5230\u3002
\u5efa\u8bae\u8d34\u51fa\u4f60\u7684\u4ee3\u7801\u8ba9\u5927\u5bb6\u5e2e\u4f60\u770b

可以这样,但是不一定绝对可靠。

因为线程的抢占是代码级的,所以很有可能你的回调函数正在执行,或还未执行的时候,另一个线程保存了文件,这样的话还是会出现问题。当然这种可能比较小。

可以使用变量控制另一个线程在选择过程中不保存文件。

GetCurrentDirectory(...);
saveAble = false;
GetOpenFileName(...);
saveAble = true;
SetCurrentDirectory(...)

另一线程:
if(saveAble) SaveFile("save\\123.data");

当然如果你的程序必须在选择过程中保存文件的话你的方法也是可取的。

太麻烦了,在保存文件前,可以先获取执行程序的所在路径,参考代码:
void GetProgramPath(LPTSTR pszBuffer, DWORD dwSize)
{
DWORD dwLength = GetModuleFileName(GetModuleHandle(NULL), pszBuffer, dwSize);
while (dwLength && pszBuffer[dwLength] != '\\') {
dwLength--;
}

if (dwLength)
pszBuffer[dwLength + 1] = '\0';
}

是有这个问题,openfile savefile 都回更改当前文件夹路径,
备份恢复好像是比较正常的解决方法, 回调函数还得重新写,得不偿失,我不明白你为什么不用绝对路径呢?

C语言无法实现该操作。你可以试着用java

你想干嘛?

  • excel vba鍋氬嚭涓涓鎵撳紑鏂囦欢瀵硅瘽妗:
    绛旓細Filename = Application.GetOpenFilename("Excel 鏂囦欢 ,*.xls;*.xlsx")If Filename <> False Then aFile = Split(Filename, "\")sfilename = aFile(UBound(aFile))End If Workbooks.Open (Filename)Workbooks(sfilename).Sheets(1).Cells.Copy Workbooks(fil).Sheets(1).Cells Workbooks(...
  • VBA 绮樿创涓嶄笂鏄庝箞鍥炰簨
    绛旓細浼拌浣犵▼搴忓伐浣滅翱杩樻槸浜嬩欢浠g爜锛屽皢澶嶅埗鐘舵佸彇娑堜簡锛屾墍浠ユ病娉曠矘璐翠笂銆傜湅浜嗗嚑澶勭矘璐撮兘鏄矘璐寸殑鍊硷紝寤鸿鏀圭敤鏁扮粍锛屽氨涓嶄細鍑虹幇绮樿创涓嶄笂鐨勬儏鍐点傛敼鍔ㄩ儴鍒嗙ず渚嬪涓嬶細c.Range("B4:AI29").Copy Sheet3.Range("J8").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False ...
  • Dark Places 姝岃瘝
    绛旓細Ceza Feat. Tech N9ne - Dark Places Ceza Tech N9ne From Turkey to Missouri Very very dark places Exodus,insanious, nocturnus İki arada bir deredeyim, iki ileri bir geri göz眉m眉 açtım ama nafile artık bırakın peşimi bana...
  • 扩展阅读:www.sony.com.cn ... www.paperpass.com ... paperpass免费入口 ... oneplus 7pro ... www.paperyy.com ... filestorage内哪些可删 ... openai官方网站 ... file name 546 ... 英剧normal people 在线 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网