鱼C论坛

 找回密码
 立即注册
查看: 4905|回复: 8

[新人报道] 新人报道 我以前的一个作品

[复制链接]
发表于 2016-6-18 13:06:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 无符号整形 于 2016-8-7 18:11 编辑

大家好!我是无符号整形。以前是自学去的,后来自学去关了,就到这来玩。
哈哈哈!废话不多说,上代码和图片!
f1.JPG
f3.jpg
上不了了,我是新手……自己看看吧。。。

代码(无rc文件):
  1. #define _CRT_SECURE_NO_WARNINGS

  2. #include <windows.h>
  3. #include<stdio.h>
  4. #include<tchar.h>
  5. #include"resource.h"

  6. HINSTANCE g_hInstance;
  7. static LOGFONT logfont;
  8. static HFONT   hFont;
  9. BOOL bUserAbort;
  10. static HWND  hDlgModeless;
  11. HWND hDlgPrint;
  12. //窗口过程函数
  13. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
  14. BOOL CALLBACK PrintDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
  15. BOOL CALLBACK AbortProc(HDC hPrinterDC, int iCode);
  16. BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
  17. void PopFontInitialize(HWND);
  18. BOOL PopPrntPrintFile(HINSTANCE, HWND, HWND, PTSTR);
  19. BOOL PopFontChooseFont(HWND);
  20. void PopFontSetFont(HWND);


  21. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
  22. {
  23.         //定义窗口类结构体变量
  24.         WNDCLASS wc;

  25.         //窗口类名称
  26.         static TCHAR* szAppName = TEXT("mymenu");

  27.         //窗口句柄
  28.         HWND hwnd = NULL;

  29.         //消息结构
  30.         MSG msg;

  31.        
  32.         /*下面的代码填充窗口类信息,如图标,鼠标样式,背景,过程函数等
  33. */       
  34.         wc.style = CS_HREDRAW | CS_VREDRAW; //窗口样式
  35.         wc.lpfnWndProc = WndProc;        //过程函数
  36.         wc.cbClsExtra = 0;        //扩展字段
  37.         wc.cbWndExtra = 0;                //扩展字段
  38.         wc.hInstance = hInstance;        //当前实例句柄
  39.         wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDC));        //设置程序图标
  40.         wc.hCursor = LoadCursor(NULL, IDC_ARROW);                //设置鼠标

  41.         //用白色画刷填充背景
  42.         wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);

  43.         //菜单
  44.         wc.lpszMenuName = NULL;

  45.         //类名
  46.         wc.lpszClassName = szAppName;

  47.         if (!RegisterClass(&wc))
  48.         {
  49.                 MessageBox(NULL, TEXT("程序只能在windowsNT下运行"),
  50.                         szAppName, MB_ICONERROR);
  51.                 return 0;
  52.         }
  53.        
  54.         HMENU hMenu, hMenuPopup;
  55.         hMenu = CreateMenu();
  56.         hMenuPopup = CreateMenu();
  57.         AppendMenu(hMenuPopup, MF_STRING, 101, "新建");
  58.         AppendMenu(hMenuPopup, MF_STRING, 102, "打开...");
  59.         AppendMenu(hMenuPopup, MF_STRING, 103, "保存");
  60.         AppendMenu(hMenuPopup, MF_STRING, 104, "另存为...");
  61.         AppendMenu(hMenuPopup, MF_SEPARATOR, 0, NULL);
  62.         AppendMenu(hMenuPopup, MF_STRING, 200, "打印...");
  63.         AppendMenu(hMenuPopup, MF_SEPARATOR, 0, NULL);
  64.         AppendMenu(hMenuPopup, MF_STRING, 112, "退出");
  65.         AppendMenu(hMenu, MF_POPUP, (ULONG_PTR)hMenuPopup, "文件");
  66.         hMenuPopup = CreateMenu();
  67.         AppendMenu(hMenuPopup, MF_STRING, 105, "调整字体...");
  68.         AppendMenu(hMenu, MF_POPUP, (ULONG_PTR)hMenuPopup, "格式");
  69.         hMenuPopup = CreateMenu();
  70.         AppendMenu(hMenuPopup, MF_STRING, 400, "撤销\tCtrl+Z");
  71.         AppendMenu(hMenuPopup, MF_SEPARATOR, 0, NULL);
  72.         AppendMenu(hMenuPopup, MF_STRING, 401, "剪切\tCtrl+X");
  73.         AppendMenu(hMenuPopup, MF_STRING, 402, "复制\tCtrl+C");
  74.         AppendMenu(hMenuPopup, MF_STRING, 403, "粘贴\tCtrl+V");
  75.         AppendMenu(hMenuPopup, MF_STRING, 404, "清除");
  76.         AppendMenu(hMenuPopup, MF_SEPARATOR, 0, NULL);
  77.         AppendMenu(hMenuPopup, MF_STRING, 405, "时间");
  78.         AppendMenu(hMenu, MF_POPUP, (ULONG_PTR)hMenuPopup, "编辑");
  79.         hMenuPopup = CreateMenu();
  80.         AppendMenu(hMenuPopup, MF_STRING, 500, "关于...");
  81.         AppendMenu(hMenu, MF_POPUP, (ULONG_PTR)hMenuPopup, "更多");
  82.         //创建窗口
  83.         hwnd = CreateWindow(szAppName,                //要注册的窗口类名
  84.                 TEXT("文档编辑器"), //窗口标题
  85.                 WS_OVERLAPPEDWINDOW,        //窗口样式
  86.                 CW_USEDEFAULT,                //窗口距离屏幕左上角都横坐标
  87.                 CW_USEDEFAULT,                //窗口距离屏幕左上角都纵坐标
  88.                 1005,                        //窗口宽度
  89.                 511,                        //窗口高度
  90.                 NULL,                        //父窗口句柄
  91.                 //NULL,
  92.                 hMenu,                        //菜单句柄
  93.                 hInstance,                //当前实例句柄
  94.                 NULL);        //指向一个值的指针,该值传递给窗口 WM_CREATE消息。一般为NULL
  95.         g_hInstance = hInstance;
  96.         //显示窗口
  97.         ShowWindow(hwnd, iCmdShow);

  98.         //更新窗口
  99.         UpdateWindow(hwnd);
  100.        
  101.        
  102.         //像操作系统注册窗口类

  103.         //消息循环,一直停在这里,退出消息循环就表示程序结束了。
  104.         while (GetMessage(&msg, NULL, 0, 0))
  105.         {
  106.                 //翻译消息
  107.                 TranslateMessage(&msg);

  108.                 //分发消息
  109.                 DispatchMessage(&msg);
  110.         }


  111.         return msg.wParam;
  112. }



  113. //消息处理函数

  114. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  115. {
  116.         static HWND hBtn;
  117.         static BOOL bFile = FALSE;
  118.         static TCHAR szBuffer[1048576];//主缓冲区
  119.         static TCHAR szBuffer1[1048576];
  120.         static TCHAR szBufferpath[MAX_PATH];
  121.         static OPENFILENAME ofn;
  122.         static HANDLE hFile;
  123.         static DWORD dFileSize;
  124.         static LPDWORD pdwNumBytesRead;
  125.         static TCHAR szData[1048576];
  126.         static LPDWORD pdwNumBytesWrite;
  127.         static TCHAR chErr[1000];
  128.         static DWORD dErr;
  129.         static SYSTEMTIME st;
  130.         static TCHAR szSystemTime[100];
  131.         static LPFINDREPLACE pfr;

  132.         switch (message)
  133.         {
  134.         case WM_CREATE:
  135.                 hBtn = CreateWindow("edit", "",
  136.                         WS_VISIBLE | WS_CHILD | WS_BORDER | WS_VSCROLL | WS_HSCROLL |
  137.                         ES_MULTILINE | ES_WANTRETURN | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
  138.                         0, 0, 985, 451, hwnd, (HMENU)1, g_hInstance, NULL);
  139.                 return 0;
  140.         case WM_QUERYENDSESSION:
  141.                 return 0;
  142.                 break;
  143.         case WM_COMMAND:
  144.                 switch(LOWORD(wParam))
  145.                 {
  146.                 case 112:
  147.                         SendMessage(hwnd,WM_CLOSE,0,0);
  148.                         return 0;
  149.                 case 101:
  150.                         GetWindowText(hBtn, szBuffer, 1048576);
  151.                         if (strcmp(szBuffer, szBuffer1) != 0)
  152.                         {
  153.                                 int ret = MessageBox(hwnd, "有未保存的工作,是否保存?", "", MB_YESNO | MB_ICONQUESTION);
  154.                                 if (ret == IDYES)
  155.                                 {
  156.                                         ofn = { sizeof(OPENFILENAME) };
  157.                                         ofn.lpstrFilter = "";
  158.                                         ofn.lpstrInitialDir = NULL;
  159.                                         ofn.lpstrFile = szBufferpath;
  160.                                         ofn.nMaxFile = sizeof(szBufferpath) / sizeof(*szBufferpath);
  161.                                         ofn.nFilterIndex = 0;
  162.                                         ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
  163.                                         if (!GetSaveFileName(&ofn))
  164.                                         {
  165.                                                 return 0;
  166.                                         }
  167.                                         hFile = CreateFile(szBufferpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
  168.                                                 CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
  169.                                         if (hFile == INVALID_HANDLE_VALUE)
  170.                                         {
  171.                                                 dErr = GetLastError();
  172.                                                 sprintf_s(chErr, _countof(chErr), "文件操作失败!错误代码:%d", dErr);
  173.                                                 MessageBox(hwnd, chErr, "错误", MB_OK | MB_ICONERROR);
  174.                                                 return 0;
  175.                                         }
  176.                                         CloseHandle(hFile);
  177.                                 }
  178.                         }
  179.                         SetWindowText(hBtn, "");
  180.                         bFile = FALSE;
  181.                         break;
  182.                 case 102:
  183.                         ofn = { sizeof(OPENFILENAME) };
  184.                         ofn.lpstrFilter = "";
  185.                         ofn.lpstrInitialDir = NULL;
  186.                         ofn.lpstrFile = szBufferpath;
  187.                         ofn.nMaxFile = sizeof(szBufferpath) / sizeof(*szBufferpath);
  188.                         ofn.nFilterIndex = 0;
  189.                         ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
  190.                         if (!GetOpenFileName(&ofn))
  191.                         {
  192.                                 return 0;
  193.                         }
  194.                         hFile = CreateFile(szBufferpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
  195.                                 OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  196.                         if (hFile == (HANDLE)-1)
  197.                         {
  198.                                 dErr = GetLastError();
  199.                                 sprintf_s(chErr, _countof(chErr), "文件操作失败!错误代码:%d", dErr);
  200.                                 MessageBox(hwnd, chErr, "错误", MB_OK | MB_ICONERROR);
  201.                                 return 0;
  202.                         }
  203.                         dFileSize = GetFileSize(hFile, &dFileSize);
  204.                         ReadFile(hFile, szBuffer, dFileSize, pdwNumBytesRead, NULL);
  205.                         SetWindowText(hBtn, szBuffer);
  206.                         CloseHandle(hFile);
  207.                         break;
  208.                 case 103:

  209.                         if (bFile)
  210.                         {
  211.                                 strcpy(szBuffer1, szBuffer);
  212.                                 hFile = CreateFile(szBufferpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
  213.                                         OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  214.                                 if (hFile == INVALID_HANDLE_VALUE)
  215.                                 {
  216.                                         dErr = GetLastError();
  217.                                         sprintf_s(chErr, _countof(chErr), "文件操作失败!错误代码:%d", dErr);
  218.                                         MessageBox(hwnd, chErr, "错误", MB_OK | MB_ICONERROR);
  219.                                         return 0;
  220.                                 }
  221.                                 GetWindowText(hBtn, szData, 1048576);
  222.                                 dFileSize = GetFileSize(hFile, &dFileSize);
  223.                                 WriteFile(hFile, szData, dFileSize, pdwNumBytesWrite, NULL);
  224.                                 CloseHandle(hFile);
  225.                         }
  226.                         else
  227.                         {
  228.                                 bFile = TRUE;
  229.                                 ofn = { sizeof(OPENFILENAME) };
  230.                                 ofn.lpstrFilter = "";
  231.                                 ofn.lpstrInitialDir = NULL;
  232.                                 ofn.lpstrFile = szBufferpath;
  233.                                 ofn.nMaxFile = sizeof(szBufferpath) / sizeof(*szBufferpath);
  234.                                 ofn.nFilterIndex = 0;
  235.                                 ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
  236.                                 if (!GetSaveFileName(&ofn))
  237.                                 {
  238.                                         bFile = FALSE;
  239.                                         return 0;
  240.                                 }
  241.                                 goto saveas;
  242.                         }
  243.                         break;
  244.                 case 104:
  245.                         ofn = { sizeof(OPENFILENAME) };
  246.                         ofn.lpstrFilter = "";
  247.                         ofn.lpstrInitialDir = NULL;
  248.                         ofn.lpstrFile = szBufferpath;
  249.                         ofn.nMaxFile = sizeof(szBufferpath) / sizeof(*szBufferpath);
  250.                         ofn.nFilterIndex = 0;
  251.                         ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
  252.                         if (!GetSaveFileName(&ofn))
  253.                         {
  254.                                 return 0;
  255.                         }
  256.                         saveas:
  257.                         hFile = CreateFile(szBufferpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
  258.                                 CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
  259.                         if (hFile == INVALID_HANDLE_VALUE)
  260.                         {
  261.                                 dErr = GetLastError();
  262.                                 sprintf_s(chErr, _countof(chErr), "文件操作失败!错误代码:%d", dErr);
  263.                                 MessageBox(hwnd, chErr, "错误", MB_OK | MB_ICONERROR);
  264.                                 CloseHandle(hFile);
  265.                                 return 0;
  266.                         }
  267.                         GetWindowText(hBtn, szData, 1048576);
  268.                         WriteFile(hFile, szData, strlen(szData), NULL, NULL);
  269.                         dFileSize = GetFileSize(hFile, &dFileSize);
  270.                         CloseHandle(hFile);
  271.                         break;
  272.                 case 105:
  273.                         MessageBox(hwnd, "请注意!选择字体时不能选择以“@”号开头的字体!否则字体全部会翻转270度!", "请注意", MB_OK | MB_ICONEXCLAMATION);
  274.                         if (PopFontChooseFont(hwnd))
  275.                                 PopFontSetFont(hBtn);
  276.                         break;
  277.                 case 200:
  278.                         PopPrntPrintFile(g_hInstance, hwnd, hBtn, szBufferpath);
  279.                         break;
  280.                 case 400:
  281.                         SendMessage(hBtn, WM_UNDO, 0, 0);
  282.                         return 0;

  283.                 case 401:
  284.                         SendMessage(hBtn, WM_CUT, 0, 0);
  285.                         return 0;

  286.                 case 402:
  287.                         SendMessage(hBtn, WM_COPY, 0, 0);
  288.                         return 0;

  289.                 case 403:
  290.                         SendMessage(hBtn, WM_PASTE, 0, 0);
  291.                         return 0;

  292.                 case 404:
  293.                         SendMessage(hBtn, WM_CLEAR, 0, 0);
  294.                         return 0;
  295.                 case 405:
  296.                         GetLocalTime(&st);
  297.                         sprintf_s(szSystemTime, _countof(szSystemTime), "%d/%d/%d %d:%d:%d",st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
  298.                         GetWindowText(hBtn, szData, 1048576);
  299.                         strcat(szData, szSystemTime);
  300.                         SetWindowText(hBtn, szData);
  301.                         return 0;
  302.                 case 500:
  303.                         DialogBox(g_hInstance, "NOTEPAD", hwnd, AboutDlgProc);
  304.                         return 0;
  305.                 }
  306.                 return 0;
  307.         case WM_SIZE:
  308.                 MoveWindow(hBtn, 0, 0, LOWORD(lParam), HIWORD(lParam),FALSE);
  309.                 return 0;
  310.         case WM_CLOSE:
  311.                 GetWindowText(hBtn, szBuffer, 1048576);
  312.                 if (strcmp(szBuffer, szBuffer1) != 0)
  313.                 {
  314.                         int ret = MessageBox(hwnd, "有未保存的工作,是否保存?", "", MB_YESNO | MB_ICONQUESTION);
  315.                         if (ret == IDYES)
  316.                         {
  317.                                 ofn = { sizeof(OPENFILENAME) };
  318.                                 ofn.lpstrFilter = "";
  319.                                 ofn.lpstrInitialDir = NULL;
  320.                                 ofn.lpstrFile = szBufferpath;
  321.                                 ofn.nMaxFile = sizeof(szBufferpath) / sizeof(*szBufferpath);
  322.                                 ofn.nFilterIndex = 0;
  323.                                 ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER;
  324.                                 GetSaveFileName(&ofn);
  325.                                 hFile = CreateFile(szBufferpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
  326.                                         CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
  327.                                 if (hFile == INVALID_HANDLE_VALUE)
  328.                                 {
  329.                                         dErr = GetLastError();
  330.                                         sprintf_s(chErr, _countof(chErr), "文件操作失败!错误代码:%d", dErr);
  331.                                         MessageBox(hwnd, chErr, "错误", MB_OK | MB_ICONERROR);
  332.                                         return 0;
  333.                                 }
  334.                                 CloseHandle(hFile);
  335.                         }
  336.                         else
  337.                         {
  338.                                 DeleteObject(hFont);
  339.                                 PostQuitMessage(0);
  340.                         }
  341.                         return 0;
  342.                 }
  343.                 else
  344.                 {
  345.                         DeleteObject(hFont);
  346.                         PostQuitMessage(0);
  347.                 }
  348.                 return 0;
  349.         }

  350.         //调用默认的过程函数
  351.         return DefWindowProc(hwnd, message, wParam, lParam);
  352. }

  353. BOOL PopFontChooseFont(HWND hwnd)
  354. {
  355.         CHOOSEFONT cf;
  356.         cf.lStructSize = sizeof (CHOOSEFONT);
  357.         cf.hwndOwner = hwnd;
  358.         cf.hDC = NULL;
  359.         cf.lpLogFont = &logfont;
  360.         cf.iPointSize = 0;
  361.         cf.Flags = CF_INITTOLOGFONTSTRUCT | CF_EFFECTS | CF_SCREENFONTS;
  362.         cf.rgbColors = 0;
  363.         cf.lCustData = 0;
  364.         cf.lpfnHook = NULL;
  365.         cf.lpTemplateName = NULL;
  366.         cf.hInstance = NULL;
  367.         cf.lpszStyle = NULL;
  368.         cf.nFontType = 0;               // Returned from ChooseFont
  369.         cf.nSizeMin = 0;
  370.         cf.nSizeMax = 0;
  371.         return ChooseFont(&cf);
  372. }

  373. void PopFontInitialize(HWND hwndEdit)
  374. {
  375.         GetObject(GetStockObject(SYSTEM_FONT), sizeof (LOGFONT),
  376.                 (PTSTR)&logfont);

  377.         hFont = CreateFontIndirect(&logfont);
  378.         SendMessage(hwndEdit, WM_SETFONT, (WPARAM)hFont, 0);
  379. }

  380. void PopFontSetFont(HWND hwndEdit)
  381. {
  382.         HFONT hFontNew;
  383.         RECT  rect;

  384.         hFontNew = CreateFontIndirect(&logfont);
  385.         SendMessage(hwndEdit, WM_SETFONT, (WPARAM)hFontNew, 0);
  386.         DeleteObject(hFont);
  387.         hFont = hFontNew;
  388.         GetClientRect(hwndEdit, &rect);
  389.         InvalidateRect(hwndEdit, &rect, TRUE);
  390. }

  391. void PopFontDeinitialize(void)
  392. {
  393.         DeleteObject(hFont);
  394. }

  395. BOOL CALLBACK PrintDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
  396. {
  397.         switch (msg)
  398.         {
  399.         case WM_INITDIALOG:
  400.                 EnableMenuItem(GetSystemMenu(hDlg, FALSE), SC_CLOSE, MF_GRAYED);
  401.                 return TRUE;

  402.         case WM_COMMAND:
  403.                 bUserAbort = TRUE;
  404.                 EnableWindow(GetParent(hDlg), TRUE);
  405.                 DestroyWindow(hDlg);
  406.                 hDlgPrint = NULL;
  407.                 return TRUE;
  408.         }
  409.         return FALSE;
  410. }

  411. BOOL CALLBACK AbortProc(HDC hPrinterDC, int iCode)
  412. {
  413.         MSG msg;

  414.         while (!bUserAbort && PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
  415.         {
  416.                 if (!hDlgPrint || !IsDialogMessage(hDlgPrint, &msg))
  417.                 {
  418.                         TranslateMessage(&msg);
  419.                         DispatchMessage(&msg);
  420.                 }
  421.         }
  422.         return !bUserAbort;
  423. }

  424. BOOL PopPrntPrintFile(HINSTANCE hInst, HWND hwnd, HWND hwndEdit,
  425.         PTSTR szTitleName)
  426. {
  427.         static DOCINFO  di = { sizeof (DOCINFO) };
  428.         static PRINTDLG pd;
  429.         BOOL            bSuccess;
  430.         int             yChar, iCharsPerLine, iLinesPerPage, iTotalLines,
  431.                 iTotalPages, iPage, iLine, iLineNum;
  432.         PTSTR           pstrBuffer;
  433.         TCHAR           szJobName[64 + MAX_PATH];
  434.         TEXTMETRIC      tm;
  435.         WORD            iColCopy, iNoiColCopy;


  436.         pd.lStructSize = sizeof (PRINTDLG);
  437.         pd.hwndOwner = hwnd;
  438.         pd.hDevMode = NULL;
  439.         pd.hDevNames = NULL;
  440.         pd.hDC = NULL;
  441.         pd.Flags = PD_ALLPAGES | PD_COLLATE |
  442.                 PD_RETURNDC | PD_NOSELECTION;
  443.         pd.nFromPage = 0;
  444.         pd.nToPage = 0;
  445.         pd.nMinPage = 0;
  446.         pd.nMaxPage = 0;
  447.         pd.nCopies = 1;
  448.         pd.hInstance = NULL;
  449.         pd.lCustData = 0L;
  450.         pd.lpfnPrintHook = NULL;
  451.         pd.lpfnSetupHook = NULL;
  452.         pd.lpPrintTemplateName = NULL;
  453.         pd.lpSetupTemplateName = NULL;
  454.         pd.hPrintTemplate = NULL;
  455.         pd.hSetupTemplate = NULL;

  456.         if (!PrintDlg(&pd))
  457.                 return TRUE;

  458.         if (0 == (iTotalLines = SendMessage(hwndEdit, EM_GETLINECOUNT, 0, 0)))
  459.                 return TRUE;


  460.         GetTextMetrics(pd.hDC, &tm);
  461.         yChar = tm.tmHeight + tm.tmExternalLeading;

  462.         iCharsPerLine = GetDeviceCaps(pd.hDC, HORZRES) / tm.tmAveCharWidth;
  463.         iLinesPerPage = GetDeviceCaps(pd.hDC, VERTRES) / yChar;
  464.         iTotalPages = (iTotalLines + iLinesPerPage - 1) / iLinesPerPage;



  465.         pstrBuffer = (PTSTR)malloc(sizeof (TCHAR)* (iCharsPerLine + 1));


  466.         EnableWindow(hwnd, FALSE);

  467.         bSuccess = TRUE;
  468.         bUserAbort = FALSE;

  469.         SetAbortProc(pd.hDC, AbortProc);


  470.         GetWindowText(hwnd, szJobName, sizeof (szJobName));
  471.         di.lpszDocName = szJobName;

  472.         if (StartDoc(pd.hDC, &di) > 0)
  473.         {


  474.                 for (iColCopy = 0;
  475.                         iColCopy < ((WORD)pd.Flags & PD_COLLATE ? pd.nCopies : 1);
  476.                         iColCopy++)
  477.                 {
  478.                         for (iPage = 0; iPage < iTotalPages; iPage++)
  479.                         {
  480.                                 for (iNoiColCopy = 0;
  481.                                         iNoiColCopy < (pd.Flags & PD_COLLATE ? 1 : pd.nCopies);
  482.                                         iNoiColCopy++)
  483.                                 {
  484.                                        

  485.                                         if (StartPage(pd.hDC) < 0)
  486.                                         {
  487.                                                 bSuccess = FALSE;
  488.                                                 break;
  489.                                         }



  490.                                         for (iLine = 0; iLine < iLinesPerPage; iLine++)
  491.                                         {
  492.                                                 iLineNum = iLinesPerPage * iPage + iLine;

  493.                                                 if (iLineNum > iTotalLines)
  494.                                                         break;

  495.                                                 *(int *)pstrBuffer = iCharsPerLine;

  496.                                                 TextOut(pd.hDC, 0, yChar * iLine, pstrBuffer,
  497.                                                         (int)SendMessage(hwndEdit, EM_GETLINE,
  498.                                                         (WPARAM)iLineNum, (LPARAM)pstrBuffer));
  499.                                         }

  500.                                         if (EndPage(pd.hDC) < 0)
  501.                                         {
  502.                                                 bSuccess = FALSE;
  503.                                                 break;
  504.                                         }

  505.                                         if (bUserAbort)
  506.                                                 break;
  507.                                 }

  508.                                 if (!bSuccess || bUserAbort)
  509.                                         break;
  510.                         }

  511.                         if (!bSuccess || bUserAbort)
  512.                                 break;
  513.                 }
  514.         }
  515.         else
  516.                 bSuccess = FALSE;

  517.         if (bSuccess)
  518.                 EndDoc(pd.hDC);

  519.         if (!bUserAbort)
  520.         {
  521.                 EnableWindow(hwnd, TRUE);
  522.                 DestroyWindow(hDlgPrint);
  523.         }

  524.         free(pstrBuffer);
  525.         DeleteDC(pd.hDC);

  526.         return bSuccess && !bUserAbort;
  527. }


  528. BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  529. {
  530.         switch (message)
  531.         {
  532.         case WM_INITDIALOG:
  533.                 return TRUE;
  534.         case WM_COMMAND:
  535.                 EndDialog(hDlg, 0);
  536.                 return TRUE;
  537.         }
  538.         return FALSE;
  539. }
复制代码

OKOKOK附件来也!
百度云:http://pan.baidu.com/s/1skK7GWP 无密码
360云:https://yunpan.cn/cRM9StGWKSXEU  访问密码 0db4
如果失效了 请回复通知。
顺便说说
1.运行uninst.exe的时候360会报毒,请退出360或添加信任
2.为了让软件内的数字签名生效,请安装安全证书!
哈哈888
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-18 15:47:28 | 显示全部楼层
飞哥你好。。。我是沧桑自学去老学员。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-18 17:33:18 | 显示全部楼层
沧桑 发表于 2016-6-18 15:47
飞哥你好。。。我是沧桑自学去老学员。。

我也是
告诉你一个秘密
输入http://www.zixue7.com/forum.php就可以访问自学去!!!
我也是醉了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-19 07:16:15 | 显示全部楼层
卧槽 飞哥这就是你的不对了 但是为什么啊  我草  不找说
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-19 07:17:03 | 显示全部楼层
飞哥 小弟我上去了 但是貌似那个买你站的人开了 黄网站。,。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-6-19 07:18:24 | 显示全部楼层
  还有就是那个网站垃圾的很啊  资源都不更新了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-19 08:52:22 | 显示全部楼层
沧桑 发表于 2016-6-19 07:18
还有就是那个网站垃圾的很啊  资源都不更新了。。

那个网站好黄!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-13 21:42:37 | 显示全部楼层
666,牛逼啊,多谢大神分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-14 11:55:40 | 显示全部楼层
太牛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-6 11:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表