当前位置: 首页 > java >正文

NOTEPAD!NPCommand函数分析之comdlg32!GetSaveFileNameW--windows记事本源代码分析

第一部分:

kd> kc

USER32!InternalCallWinProc
USER32!UserCallDlgProcCheckWow
USER32!DefDlgProcWorker
USER32!SendMessageWorker
USER32!InternalCreateDialog
USER32!InternalDialogBox
USER32!DialogBoxIndirectParamAorW
USER32!DialogBoxIndirectParamW
USER32!DialogBoxIndirectParamW_wrapper
comdlg32!NewGetFileName
comdlg32!NewGetSaveFileName
comdlg32!GetFileName
comdlg32!GetSaveFileNameW
NOTEPAD!NPCommand
NOTEPAD!NPWndProc
USER32!InternalCallWinProc
USER32!UserCallWinProcCheckWow
USER32!DispatchClientMessage
USER32!__fnDWORD
ntdll!KiUserCallbackDispatcher
nt!KiCallUserMode
nt!KeUserModeCallback
win32k!SfnDWORD
win32k!xxxSendMessageToClient
win32k!xxxSendMessageTimeout
win32k!xxxSendMessage
win32k!xxxTranslateAccelerator
win32k!NtUserTranslateAccelerator
nt!_KiSystemService
SharedUserData!SystemCallStub
ntdll!KiUserCallbackDispatcher
USER32!NtUserTranslateAccelerator
NOTEPAD!WinMain
NOTEPAD!WinMainCRTStartup
kernel32!BaseProcessStart

第二部分:

            //
// Do common dialog to save file
//

            if (GetSaveFileName(&OFN))
{


第三部分:


/* ** Notepad command proc - called whenever notepad gets WM_COMMAND
message.  wParam passed as cmd */
INT NPCommand(
HWND     hwnd,
WPARAM   wParam,
LPARAM   lParam )
{
HWND     hwndFocus;
LONG     lSel;
TCHAR    szNewName[MAX_PATH] = TEXT("");      /* New file name */
FARPROC  lpfn;
LONG     style;
DWORD    rc;
RECT     rcClient;

    switch (LOWORD(wParam))
{

        case M_SAVEAS:

            OFN.lpstrFile       = szNewName;
OFN.lpstrTitle      = szSaveCaption;
/* Added OFN_PATHMUSTEXIST to eliminate problems in SaveFile.
* 12 February 1991    clarkc
*/
OFN.Flags = OFN_HIDEREADONLY     | OFN_OVERWRITEPROMPT |
OFN_NOREADONLYRETURN | OFN_PATHMUSTEXIST   |
OFN_EXPLORER         |
OFN_ENABLESIZING     |
OFN_ENABLETEMPLATE   | OFN_ENABLEHOOK;

            OFN.lpTemplateName= TEXT("NpEncodingDialog");
OFN.lpfnHook= NpSaveDialogHookProc;

            /* ALL non-zero long pointers must be defined immediately
* before the call, as the DS might move otherwise.
* 12 February 1991    clarkc
*/
OFN.lpstrFilter       = szSaveFilterSpec;
OFN.lpstrDefExt       = TEXT("txt");

            if (!fUntitled)
{
lstrcpyn(szNewName, szFileName, MAX_PATH); /* set default selection */
}
else
{
lstrcpy (szNewName, TEXT("*.txt") );
}

            fInSaveAsDlg = TRUE;

            OFN.nFilterIndex= FILE_TEXT;

            //
// Do common dialog to save file
//

            if (GetSaveFileName(&OFN))
{

http://www.xdnf.cn/news/16219.html

相关文章:

  • TechGPT3部署
  • 【STM32】FreeRTOS 任务的创建(二)
  • 深入理解大语言模型生成参数:temperature、top\_k、top\_p 等全解析
  • EasyExcel 模板导出数据 + 自定义策略(合并单元格)
  • vue 项目中 components 和 views 包下的组件功能区别对比,示例演示
  • AudioLLM 开源项目了解学习
  • 网络编程——聊天程序实现
  • 基于arduino uno r3主控的环境监测系统设计-2
  • 后端分页接口实现
  • SpringBoot框架简介
  • PHP 与 Vue.js 结合的前后端分离架构
  • Qwen3-Coder实现中国象棋游戏的尝试
  • DRF - 博客列表API
  • 【C++】类和对象(中)
  • Eureka-服务注册,服务发现
  • 办公自动化入门:如何高效将图片整合为PDF文档
  • PHP文件下载
  • Lua(字符串)
  • 图论:搜索问题
  • linus 环境 tomcat启动日志分隔
  • LeetCode31~50题解
  • LeetCodeOJ题:回文链表
  • CAN总线仲裁中的延时补偿机制
  • Lua(文件I/O)
  • 【XGBoost】两个单任务的模型 MAP - Charting Student Math Misunderstandings
  • 游戏开发Unity/ ShaderLab学习路径
  • 光伏电站巡检清扫飞行机器人设计cad【6张】三维图+设计说明书
  • Java 中 Future 与 Callable 的使用详解
  • 3D Semantic Occupancy Prediction
  • Django 科普介绍:从入门到了解其核心魅力