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

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.dtcms.com/a/296656.html

相关文章:

  • 暑假集训篇之并发处理①练习题
  • prometheus监控k8s的metric详解-01-apiserver部分-05-其他
  • 局域网TCP通过组播放地址rtp推流和拉流实现实时喊话
  • 猎板碳油 PCB和普通PCB的区别
  • 【OpenCV实现多图像拼接】
  • kafka消费者组消费进度(Lag)深入理解
  • Redis--哨兵机制详解
  • Linux C:预处理命令
  • 225. 用队列实现栈
  • markdown学习笔记(个人向) Part.2
  • Redis高可用架构演进面试笔记
  • C#解析JSON数据全攻略
  • SpringBoot框架,不同环境中实体类对应不同的表
  • MySQL workbench的使用
  • Django 科普介绍:从入门到了解其核心魅力
  • 【Python】Python多线程爬虫实战:从基础原理到分布式架构实现
  • RCLAMP0512TQTCT 升特半导体 TVS二极管 12通道全防护芯片 以太网/PLC控制/5G基站专用
  • UE5中如何解决角色网格体“掉下去”的问题
  • 高并发系统设计面试题
  • 高效互联,ModbusTCP转EtherCAT网关赋能新能源电缆智能制造
  • Apache 消息队列分布式架构与原理
  • 六种经典智能优化算法(PSO/GWO/WOA/HHO/DBO/SSA)无人机(UAV)三维路径规划,Matlab代码实现
  • 【三桥君】大语言模型计算成本高,MoE如何有效降低成本?
  • Java学习---Spring及其衍生(下)
  • Oracle 时间处理函数和操作符笔记
  • 数据库常用DDL语言
  • 洛谷 P1996 约瑟夫问题之题解
  • LLM针对隐藏层的特征增强的相关论文
  • Python生成折线图
  • 7.24 C/C++蓝桥杯 | 排序算法