《Windows核心编程(第5版)微软技术丛书》pdf下载在线阅读,求百度网盘云资源

《Windows核心编程(第5版)微软技术丛书》pdf下载在线阅读,求百度网盘云资源,第1张

《Windows核心编程》(Jeffrey Richter)电子书网盘下载免费在线阅读

链接:https://pan.baidu.com/s/1X3HE0MQG7dGdY_PgQqaJgg

密码:xdpk  

书名:Windows核心编程

作者:Jeffrey Richter

豆瓣评分:9.2

出版社:人民邮电出版社

出版年份:2008-8

页数:820

内容简介:

【内容简介】

本书是Windows 程序设计领域的名著,涵盖了Windows 的最新版本Vista 以及Windows XP 的最新内容。书中全面深入地介绍了Windows 的各种基本要素,如进程、线程池、虚拟内存、DLL、设备I/O 和SEH 等,并列举了大量应用程序,精辟地分析了要素的使用方法。.

本书适于各层次Windows 编程人员阅读。 ...

【目录信息】

Acknowledgments . xxi

Introduction xxiii

64-Bit Windows xxiii

What’s New in the Fifth Edition xxiv

Code Samples and System Requirements xxvi

Support for This Book xxvi

Questions and Comments xxvi

Part I Required Reading

1 Error Handling 3

Defining Your Own Error Codes 7

The ErrorShow Sample Application 7

2 Working with Characters and Strings 11

Character Encodings 12

ANSI and Unicode Character and String Data Types 13

Unicode and ANSI Functions in Windows 15

Unicode and ANSI Functions in the C Run-Time Library 17

Secure String Functions in the C Run-Time Library 18

Introducing the New Secure String Functions 19

How to Get More Control When Performing String Operations 22

<<查看详细目录

作者简介:

Jeffrey Richter全球享有盛誉的微软技术专家,著名技术咨询和培训公司Wintellect创始人之一,MSDN Magazine杂志特邀编辑。多年来,他担任微软各开发团队顾问,参与了微软的许多关键产品包括各版本Windows、Visual Studio、Microsoft Offce和.NET框架的设计和编程。他撰写了一系列著作,包括本书和《深入理解.NET》(第2版·英文版,人民邮电出版社。2008),都堪称技术图书的典范,影响了一代Windows程序员,并因此荣获微软公司杜区最高技术荣誉“微软软件传奇人物”(Software Legend)称号。

登录

首页

学习

实践

活动

专区

工具

TVP

返回腾讯云官网

全栈程序员站长

55.1K 篇文章

关注

写字板(Windows程序设计)

2022-09-06 09:52:05阅读 1730

大家好,又见面了,我是你们的朋友全栈君。

前言

c# 正编译生成debug,exe等文件,同样也可以通过exe反编译生成相对应的文件,一劳永逸,任君选择(`・ω・´) (我们老师为了给我们看要求效果给了我们一个半成品exe,cv工程师上线了,真为所欲为)

问题描述

验证简易相册程序的实现(不需要写入报告)

设计一个类似Windows写字板的程序,使其具有以下功能:

提供基本的写字板功能,如文件的打开,保存,支持txt、rtf;

实现多格式的文本的编辑、修饰等,均有相应的菜单来控制,常用的菜单项配备相应的工具栏按钮(可参照Windows自带的写字板)

按需添加其他的代码,如窗口的布局等;

实现自定义的查找对话框,有能力的同学可进一步实现替换/全文替换等功能

状态栏中显示学生学号、姓名等信息,在窗口的标题中显示当前正在编辑的文件名

(可选)其他你觉得实用的功能:如支持word等

(可选)将其改造成MDI程序:父窗口中包含新建、窗口、帮助等菜单;在运行时,子窗口的菜单会与其合并,合理设置各菜单项的MergeIndex/MergeAction属性,使其符合我们的使用习惯;编程允许用户调整各自窗口间的布局关系(平铺、层叠等)等

先看效果

解决方法

richtextbox

用richtextbox是一个类似写字板的一个控件,能满足rtf,txt等格式,如果要满足doc文档,去百度Microsoft.Office.Interop.Word.dll,下载并引用,打开保存代码如下(其中saveName为文件名)

/// <summary>

/// 打开文档 *** 作

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)

{

openFileDialog1.InitialDirectory = "C:\\"

openFileDialog1.Filter = "rtf 文件|*.rtf|txt 文件|*.txt|doc files|*.doc"

if (openFileDialog1.ShowDialog() != DialogResult.OK)

return

saveName = openFileDialog1.FileName

if (openFileDialog1.FilterIndex == 1)

richTextBox1.LoadFile(saveName)

else if (openFileDialog1.FilterIndex == 2)

richTextBox1.LoadFile(saveName, RichTextBoxStreamType.PlainText)

else

OpenWord(saveName)

Text = saveName

}

public void 父窗体打开Open(WritingBoard writingBoard)

{

writingBoard.openFileDialog1.InitialDirectory = "C:\\"

writingBoard.openFileDialog1.Filter = "rtf 文件|*.rtf|txt 文件|*.txt|doc files|*.doc"

if (writingBoard.openFileDialog1.ShowDialog() != DialogResult.OK)

return

saveName = writingBoard.openFileDialog1.FileName

if (writingBoard.openFileDialog1.FilterIndex == 1)

writingBoard.richTextBox1.LoadFile(saveName)

else if (writingBoard.openFileDialog1.FilterIndex == 2)

writingBoard.richTextBox1.LoadFile(saveName, RichTextBoxStreamType.PlainText)

else

OpenWord(saveName)

writingBoard.Text = saveName

return

}

public void OpenWord(string fileName)

{

ApplicationClass applicationClass = new ApplicationClass()

Document document = null

object obj = Missing.Value

object FileName = fileName

object ReadOnly = false

object Visible = true

try

{

document = applicationClass.Documents.Open(ref FileName, ref obj, ref ReadOnly, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref Visible, ref obj, ref obj, ref obj, ref obj)

document.ActiveWindow.Selection.WholeStory()

document.ActiveWindow.Selection.Copy()

richTextBox1.Paste()

}

finally

{

document?.Close(ref obj, ref obj, ref obj)

applicationClass?.Quit(ref obj, ref obj, ref obj)

}

}

/// <summary>

/// 保存 *** 作

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void 保存SToolStripMenuItem_Click(object sender, EventArgs e)

{

if (saveName != "")

{

richTextBox1.SaveFile(saveName, RichTextBoxStreamType.RichText)

}

else

{

saveFileDialog1.Filter = "rtf files|*.rtf"

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

saveName = saveFileDialog1.FileName

richTextBox1.SaveFile(saveName, RichTextBoxStreamType.RichText)

}

}

}

/// <summary>

/// 另存为 *** 作

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void 另存为AToolStripMenuItem_Click(object sender, EventArgs e)

{

saveFileDialog1.FileName = saveName.Substring(saveName.LastIndexOf('\\') + 1)

saveFileDialog1.Filter = "rtf files|*.rtf|txt files|*.txt|doc files|*.doc"

saveFileDialog1.AddExtension = true

if (saveFileDialog1.ShowDialog() != DialogResult.OK)

return

saveName = saveFileDialog1.FileName

if (saveFileDialog1.FilterIndex == 1)

richTextBox1.SaveFile(saveName, RichTextBoxStreamType.RichText)

else if (saveFileDialog1.FilterIndex == 2)

richTextBox1.SaveFile(saveName, RichTextBoxStreamType.PlainText)

else

SaveAsWord(saveName)

}

public void SaveAsWord(string fileName)

{

ApplicationClass applicationClass = new ApplicationClass()

Document document = null

object obj = Missing.Value

object FileName = fileName

try

{

document = applicationClass.Documents.Add(ref obj, ref obj, ref obj, ref obj)

document.ActiveWindow.Selection.WholeStory()

richTextBox1.SelectAll()

Clipboard.SetData(DataFormats.Rtf, richTextBox1.SelectedRtf)

document.ActiveWindow.Selection.Paste()

document.SaveAs(ref FileName, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj)

}

finally

{

document?.Close(ref obj, ref obj, ref obj)

applicationClass?.Quit(ref obj, ref obj, ref obj)

}

}

/// <summary>

/// 新建 *** 作

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void 新建NToolStripMenuItem_Click(object sender, EventArgs e)

{

richTextBox1.Clear()

saveName = ""

}

复制

写字板 *** 作设置

其他一系列doc加粗,倾斜,下划线,左中右对齐,字体型号颜色,查找(大小写,全字,正逆),其实本质上来说都是对richtextbox的一些属性的修改,注意多用DropDownOpening,DropDownItemClicked等 *** 作代替Click,使代码更加精简高效

  这是一个MDI调整子窗体使用DropDownItemClicked的例子,高效优雅 = v =

private void 窗口WToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)

{

string layout=e.ClickedItem.Text

switch(layout)

{

case "水平平铺": LayoutMdi(MdiLayout.TileHorizontal)break

case "垂直平铺": LayoutMdi(MdiLayout.TileVertical)break

case "层叠": LayoutMdi(MdiLayout.Cascade)break

}

}

复制

MDI的使用,是为了让一个父窗体拥有许多个子窗体,进行更加简单有效的 *** 作

在父窗体new子窗体就行,记得一系列基本 *** 作,你也可以通过生成函数和属性进行快速高效设置

private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)

{

WritingBoard writingBoard = new WritingBoard()

writingBoard.TopLevel = false

writingBoard.MdiParent = this

writingBoard.Show()

}

private void 打开ToolStripMenuItem_Click(object sender, EventArgs e)

{

WritingBoard writingBoard = new WritingBoard()

writingBoard.TopLevel = false

writingBoard.MdiParent = this

writingBoard.父窗体打开Open(writingBoard)

writingBoard.Show()

}

private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)

{

foreach (WritingBoard writingBoard in MdiChildren) writingBoard.Close()

Application.Exit()

}

private void 窗口WToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)

{

string layout=e.ClickedItem.Text

switch(layout)

{

case "水平平铺": LayoutMdi(MdiLayout.TileHorizontal)break

case "垂直平铺": LayoutMdi(MdiLayout.TileVertical)break

case "层叠": LayoutMdi(MdiLayout.Cascade)break

}

}

复制

源码附上

传送门,我设置了分支,这样我就可以把不同内容相同属性的代码放在一起了,同时也可以拥有不同的md可以阅读,对于git 的整理也是不错的(`・ω・´)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154565.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

本文分享自作者个人站点/博客

复制

如有侵权,请联系 cloudcommunity@tencent.com 删除。

展开阅读全文

WindowshttpsJava网络安全

文章来自专栏

全栈程序员必看

55.1K 篇文章210 人关注

订阅

评论 (0)

写评论

暂无人发表评论

相关文章

《windows程序设计》_windows窗口程序设计

TEXTMETRIC类型的变量用于存储装置字体结构信息(上述变量),在窗口中输出文字时需要用到上述变量。

Windows程序设计——画圆[通俗易懂]

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170966.html原文链接:https://javaforall.cn

windows程序设计第五版_windows程序设计入门

函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。

Windows程序设计学习笔记(一)Windows内存管理初步

学习Windows程序设计也有一些时间了,为了记录自己的学习成果,以便以后查看,我希望自己能够坚持写下一系列的学习心得,对自己学习的内容进行总结,同时与大家交流...

windows程序设计第五版_windows程序开发

[声明] HPEN CreatePen(int nPenStyle, int nWidth, COLORREF crColor)[说明] 用指定的样式...

【读书笔记】Windows程序设计5

与从BeginPaint函数返回的设备句柄不同,从GetDC返回的设备句柄中的裁剪区域是整个客户区,而不仅仅

Windows程序设计:MFC 、Winform 和 WPF 比较[通俗易懂]

WinForm封装了win32的api,多次进行P/invoke *** 作(大部分使用p/invoke *** 作封装),速度慢。

Windows程序设计——窗口键盘消息滚动事件[通俗易懂]

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/171006.html原文链接:https://javaforall.cn

什么是WPF_windows程序设计教程

(1)字参数(wParam) (2)长参数(lParam) 字参数和长参数都是32位整数,用于提供消息的附带消息,是消息传递过程中参数的载体。附加信息的...

createfont函数_windows程序设计基于.net平台

cHeight是字体的高度。 cWidth是字体的宽度。 cEscapement是字体的倾斜角。 cOrientation是字体的倾斜角。 cWeigh...

Windows程序设计——LoadImage参数及其用法「建议收藏」

函数功能:该函数装载图标,光标,或位图。 函数原型: HANDLE LoadImage ( HINSTANCE hinst, LPCTSTR lpsz...

微信小程序写字板功能

windows文件在另一程序打开_windows程序设计第7版

参数可选值: SW_HIDE = 0{隐藏, 并且任务栏也没有最小化图标} SW_SHOWNORMAL = 1{用最近的大小和位置显示, 激活} ...

windows程序设计第五版_程序设计中三种基本结构

WNDCLASS是一个由系统支持的结构,用来储存某一类窗口的信息,如ClassStyle,消息处理函数,Icon,Cursor,背景Brush等。也就是说,Cr...

用vb.net实现写字板程序报告(二)

用vb.net实现写字板程序报告(二) –by zigz(LuHai) luluhai@eastd


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11048455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存