文淵博客

Follow me on TwitterRSS订阅

  • 首页
  • 技术
    • .NET
    • IIS
    • jQuery
    • SQL
    • Visual C++
  • 文淵閣
  • 网文
  • 随笔

解决 Windows 7 每次启动都运行 CHKDSK 并重新启动的问题

八 29th

由admin发表在随笔 | 27 views

没有评论


 Powered by Max Banner Ads 

如果遇到 Windows 7 每次启动时都运行 CHKDSK 自检,出现“CHKDSK is verifying files (stage 1 of 3) …” 等信息并重新启动,可以于 Windows 7 启动成功后在“开始——运行”中输入:

chkdsk <盘符:> /x /f

希望本文对您有所帮助。

Windows 7, 随笔

使用IPicture接口显示图片

八 28th

由admin发表在Visual C++ | 21 views

没有评论

以下代码使用IPicture接口显示图片,可直接放于OnDraw函数中。
IPictrue接口支持BMP、DIB、EMF、GIF、ICO、JPG、WMF格式图片的显示,但只能保存BMP和ICO格式的图片。

// pDoc为文档对象指针
// pDC为设备描述表指针

::CoInitialize(NULL);  // COM 初始化
HRESULT hr;
CFile file;

file.Open(pDoc->GetPathName(), CFile::modeRead | CFile::shareDenyNone );  // 读入文件内容
DWORD dwSize = file.GetLength();
HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, dwSize );
LPVOID lpBuf = ::GlobalLock( hMem );
file.ReadHuge( lpBuf, dwSize );
file.Close();
::GlobalUnlock( hMem );

IStream * pStream = NULL;
IPicture * pPicture = NULL;

// 由 HGLOBAL 得到 IStream,参数 TRUE 表示释放 IStream 的同时,释放内存
hr = ::CreateStreamOnHGlobal( hMem, TRUE, &pStream );
ASSERT ( SUCCEEDED(hr) );

hr = ::OleLoadPicture( pStream, dwSize, TRUE, IID_IPicture, ( LPVOID * )&pPicture );
ASSERT(hr==S_OK);

long nWidth,nHeight;  // 宽高,MM_HIMETRIC 模式,单位是0.01毫米
pPicture->get_Width( &nWidth );    // 宽
pPicture->get_Height( &nHeight );  // 高

CRect rect;
GetClientRect(&rect);

CSize sz( nWidth, nHeight );
pDC->HIMETRICtoDP( &sz );  // 转换 MM_HIMETRIC 模式单位为 MM_TEXT 像素单位
long x, y, cx, cy;

// 原始大小
/*
cx = sz.cx;
cy = sz.cy;
x = rect.Width() / 2 – cx / 2;
y = rect.Height() / 2 – cy / 2;
*/

// 自动适应窗口
double fRatePic, fRateWnd;
fRatePic = (double)sz.cx / (double)sz.cy;
fRateWnd = (double)rect.Width() / (double)rect.Height();
if (fRatePic > fRateWnd)
{
cx = rect.Width();
cy = (long)(rect.Width() / fRatePic);
}
else
{
cx = (long)(rect.Height() * fRatePic);
cy = rect.Height();
}
if (cx == rect.Width())
{
x = 0;
y = rect.Height() / 2 – cy / 2;
}
if (cy == rect.Height())
{
x = rect.Width() / 2 – cx / 2;
y = 0;
}

pPicture->Render(pDC->m_hDC, x, y, cx, cy,
0, nHeight, nWidth, -nHeight, NULL);

if ( pPicture ) pPicture->Release();// 释放 IPicture 指针
if ( pStream ) pStream->Release();  // 释放 IStream 指针,同时释放了 hMem

::CoUninitialize();

希望本文对您有所帮助。

VC

让程序在Windows启动时自动运行

八 28th

由admin发表在Visual C++ | 14 views

没有评论

CString strAppName = _T(“AppName”);            // 应用程序名
CString strAppPath = _T(“c:\\AppName.exe”);        // 应用程序存储路径
CString strRegPath = _T(“Software\\Microsoft\\Windows\\CurrentVersion\\Run”);
HKEY hKey;

RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath, 0, KEY_WRITE, &hKey);
RegDeleteValue(hKey, strAppName);
RegSetValueEx(hKey, strAppName, 0, REG_SZ, (unsigned char*)strAppPath.GetBuffer(0), strAppPath.GetLength());

如果想要在启动时同时隐藏窗体,可以捕获WM_WindowPosChanging消息:
void CMainFrame::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
if (m_bAutoHide == FALSE)
{
CDialog::OnWindowPosChanging(lpwndpos);    // 显示
}
else
{
if (lpwndpos->flags & SWP_SHOWWINDOW)    // 隐藏
{
lpwndpos->flags &= ~SWP_SHOWWINDOW;
PostMessage(WM_WINDOWPOSCHANGING, 0, (LPARAM)lpwndpos);
ShowWindow(SW_HIDE);

m_bAutoHide = FALSE;
}
else
{
CDialog::OnWindowPosChanging(lpwndpos);    // 显示
}
}
}
其中的m_bAutoHide是BOOL型成员变量,用于记录是否在启动时隐藏窗体。

希望本文对您有所帮助。

VC

让程序进驻系统托盘

八 28th

由admin发表在Visual C++ | 11 views

没有评论

1.定义自定义消息ID(可在StdAfx.h或主窗体的类型声明文件中):
#define WM_USER_NOTIFYICON    WM_USER + 0×100

2.在主窗体的类型声明文件(如:MainFrame.h)加入NOTIFYICONDATA类型成员变量:
NOTIFYICONDATA m_nid;

3.在主窗体中处理WM_CREATE消息:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;

m_nid.cbSize = sizeof(NOTIFYICONDATA);
m_nid.hWnd = this->m_hWnd;
m_nid.uFlags = NIF_MESSAGE|NIF_ICON|NIF_TIP;    // 标志位
m_nid.uCallbackMessage = WM_USER_NOTIFYICON;    // 自定义消息
m_nid.uID = IDR_MAINFRAME;            // 资源ID
CString szToolTip = _T(“ToolTip”);
_tcscpy(m_nid.szTip, szToolTip);        // 提示信息
HICON hIcon;
hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);    // 图标
m_nid.hIcon = hIcon;
::Shell_NotifyIcon(NIM_ADD, &m_nid);
if (hIcon)
::DestroyIcon(hIcon);

return 0;
}

4.重载WindowProc虚函数:
LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_USER_NOTIFYICON:    // 自定义消息
if (lParam == WM_LBUTTONDBLCLK)        // 鼠标双击时出现主窗口
{

ShowWindow(SW_HIDE);
}
else if (lParam == WM_RBUTTONDOWN)    // 鼠标右键单击时弹出菜单
{
CMenu menu;
menu.LoadMenu(IDR_TRAY);    // 载入菜单
CMenu* pMenu = menu.GetSubMenu(0);

CPoint pos;
GetCursorPos(&pos);
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pos.x, pos.y, AfxGetMainWnd());
}
break;

case WM_SYSCOMMAND:
if (wParam == SC_MINIMIZE)    // 最小化时隐藏主窗体
{
ShowWindow(SW_HIDE);
return 0;
}
break;
}

return CWnd::WindowProc(message, wParam, lParam);
}

5.在主窗体中处理WM_DESTORY消息:
void CMainFrame::OnDestroy()
{
CWnd::OnDestroy();

::Shell_NotifyIcon(NIM_DELETE, &m_nid);
}

希望本文对您有所帮助。

VC

枚举复合文件的存储结构

八 28th

由admin发表在Visual C++ | 9 views

没有评论

Word和Excel等文件均称为复合文件。这类文件内部有一个“文件系统”,采用“磁盘文件”的组织方式来组织文件内的数据。也称为“文件中的文件系统”。
每个复合文件中有一个“根存储”(类似于文件系统中的“根目录”),根存之下是若干“子存储”(类似于“子目录”)和“数据流”(类似于“文件”),子存储之中可以再有子存储和数据流……。
复合文件是COM技术的基石。下列代码可将任一复合文件的文件结构进行枚举,如配合树型控件(如:CTreeCtrl),可将文件的存储结构清晰的展现出来。

#include <atlconv.h>

void DocFileViewer(LPCTSTR lpszPathName)
{
// lpszPathName: 复合文件存储路径

// COM 初始化
// 如果是MFC程序,可以使用AfxOleInit()替代
::CoInitialize(NULL);

USES_CONVERSION;

LPCTSTR lpFileName = lpszPathName;
HRESULT hr;
IStorage * pStg = NULL;

LPCOLESTR lpwFileName = T2COLE(lpFileName);    // 转换T类型为宽字符
hr = ::StgIsStorageFile(lpwFileName);        // 是复合文件吗?
if (FAILED(hr))
{
return FALSE;
}
hr = ::StgOpenStorage(        // 打开复合文件
lpwFileName,        // 文件名称
NULL,
STGM_READWRITE | STGM_DIRECT | STGM_SHARE_EXCLUSIVE,
0,
0,
&pStg);            // 得到根存储接口指针

EnumStorage(pStg);        // 开始枚举

if(pStg)
{
pStg->Release();
}

// COM 释放
// 如果使用了AfxOleInit(),则无需调用该函数
::CoUninitialize();
}

void EnumStorage(IStorage *pStg)
{
USES_CONVERSION;

IEnumSTATSTG * pEnum = NULL;    // 枚举器
HRESULT hr;

hr = pStg->EnumElements(0, NULL, 0, &pEnum);
ASSERT(SUCCEEDED(hr));

STATSTG statstg;
IStorage * pStgSub = NULL;    // 子存储接口指针

while (pEnum->Next(1, &statstg, NULL) == NOERROR)
{
// statstg.type 保存着对象类型 STGTY_STREAM 或 STGTY_STORAGE
// statstg.pwcsName 保存着对象名称
// …… 还有时间,长度等很多信息。请查看 MSDN

switch (statstg.type)
{
case STGTY_STORAGE:    // 子存储

// …

hr = pStg->OpenStorage(        // 打开子存储
statstg.pwcsName,
NULL,
STGM_READWRITE | STGM_DIRECT | STGM_SHARE_EXCLUSIVE,
NULL,
0,
&pStgSub);        // 得到子存储接口指针

if (FAILED(hr))
{
return;
}

EnumStorage(pStgSub);        // 递归枚举子存储

break;

case STGTY_STREAM:    // 数据流

// …

break;
}

::CoTaskMemFree(statstg.pwcsName);    // 释放名称所使用的内存
}

if(pEnum)
{
pEnum->Release();
}

if(pStgSub)
{
pStgSub->Release();
}
}

希望本文对您有所帮助。

VC

.NET中将RichTextBox控件的内容存入数据库

八 28th

由admin发表在.NET | 8 views

没有评论

////////////////////////////////////////////////////////////
// 以下程序将RichTextBox控件(rtb)的内容存入temp_db数据库的
// temp_tab表的content(Text型)字段中。
SqlDataAdapter da = new SqlDataAdapter(“select * from temp_tab”,
“Server=localhost;UID=sa;PWD=1234;Database=temp_db”);
DataTable dt = new DataTable();
da.Fill(dt);
DataRow dr = dt.NewRow();
dr["content"] = rtb.Rtf;
dt.Rows.Add(dr);
SqlCommandBuilder cb = new SqlCommandBuilder(da);
da.Update(dt);

希望本文对您有所帮助。

.NET

.NET中获取HTML页面并提取其中的超链接

八 28th

由admin发表在.NET | 11 views

没有评论

下列的函数分别用于获取HTML页面和提取页面中的超链接。

using System.Net;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

string[] GetLink(string strHtml)
{
Regex reg = new Regex(“href[\\s\\r]*=[\\s\\r]*[\"\']{0,1}([^\"\'\\s\\r>]*)[\"\'\\s\\r]{0,1}”, RegexOptions.IgnoreCase);
MatchCollection mc = reg.Matches(strHtml);
if (mc.Count > 0)
{
string[] strHref = new string[mc.Count];
int i = 0;
foreach (Match m in mc)
{
strHref[i] = m.Groups[1].Value;
++i;
}
return strHref;
}
return null;
}

string GetHttp(string strUrl)
{
string strHtml = “”;
WebResponse wrp = null;

try
{
WebRequest wrq = WebRequest.Create(strUrl);
wrq.Timeout = 60000;
wrp = wrq.GetResponse();
}
catch (WebException e)
{

}
catch (Exception e)
{

}
finally
{
if (wrp != null)
{
StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding(“GB2312″));
strHtml = sr.ReadToEnd();
sr.Close();
wrp.Close();
}
}

return strHtml;
}

可首先使用GetHttp获取指定URL的页面内容,然后将此内容作为参数传给GetLink,GetLink返回的String数组中的每个元素代表一个超链接。

希望本文对您有所帮助。

.NET

ASP.NET中为DataGrid动态创建模板列

八 28th

由admin发表在.NET | 7 views

没有评论

为DataGrid动态创建模板列,首先要实现ITemplate接口:
public class MyDataGridTemplate : System.Web.UI.ITemplate
{
ListItemType _litType;
object _objData;

public MyDataGridTemplate(ListItemType litType, object objData)
{
_litType = litType;
_objData = objData;
}

public void InstantiateIn(System.Web.UI.Control container)
{
Literal ltr = new Literal();
TextBox txt = new TextBox();

switch(_litType)
{
case ListItemType.Header:
ltr.Text = “<b>” + _objData.ToString() + “</b>”;
container.Controls.Add(ltr);
break;
case ListItemType.Item:
ltr.Text = _objData.ToString();
container.Controls.Add(ltr);
break;
case ListItemType.EditItem:
container.Controls.Add(txt);
break;
case ListItemType.Footer:
ltr.Text = “<i>” + _objData.ToString() + “</i>”;
container.Controls.Add(ltr);
break;
}
}
}
现在就可以动态创建模板列了:
TemplateColumn tc;

tc = new TemplateColumn();
tc.HeaderText = “列1″;
tc.ItemTemplate = new MyDataGridTemplate(ListItemType.Item, “列1″);
dg.Columns.Add(tc);

tc = new TemplateColumn();
tc.HeaderText = “列2″;
tc.ItemTemplate = new MyDataGridTemplate(ListItemType.Item, “列2″);
dg.Columns.Add(tc);
以上代码的效果与下列代码相同:
<asp:TemplateColumn HeaderText=”列1″>
<ItemTemplate>
<asp:Literal Runat=”server” Text=”列1″></asp:Literal>
</ItemTemplate>
</asp:TemplateColumn>

<asp:TemplateColumn HeaderText=”列2″>
<ItemTemplate>
<asp:Literal Runat=”server” Text=”列2″></asp:Literal>
</ItemTemplate>
</asp:TemplateColumn>

希望本文对您有所帮助。

ASP.NET

世界上最健康的作息时间表

八 28th

由admin发表在网文 | 16 views

没有评论

7:30:起床。英国威斯敏斯特大学的研究人员发现,那些在早上5:22―7:21 分起床的人,其血液中有一种能引起心脏病的物质含量较高,因此,在7:21之后起床对身体健康更加有益。打开台灯。“一醒来,就将灯打开,这样将会重新调整体内的生物钟,调整睡眠和醒来模式。”拉夫堡大学睡眠研究中心教授吉姆·霍恩说。
喝一杯水。水是身体内成千上万化学反应得以进行的必需物质。早上喝一杯清水,可以补充晚上的缺水状态。

7:30―8:00:在早饭之前刷牙。“在早饭之前刷牙可以防止牙齿的腐蚀,因为刷牙之后,可以在牙齿外面涂上一层含氟的保护层。要么,就等早饭之后半小时再刷牙。”英国牙齿协会健康和安全研究人员戈登·沃特金斯说。

8:00―8:30:吃早饭。“早饭必须吃,因为它可以帮助你维持血糖水平的稳定。”伦敦大学国王学院营养师凯文·威尔伦说。早饭可以吃燕麦粥等,这类食物具有较低的血糖指数。

8:30―9:00:避免运动。来自布鲁奈尔大学的研究人员发现,在早晨进行锻炼的运动员更容易感染疾病,因为免疫系统在这个时间的功能最弱。步行上班。马萨诸塞州大学医学院的研究人员发现,每天走路的人,比那些久坐不运动的人患感冒病的几率低25%。

9:30:开始一天中最困难的工作。纽约睡眠中心的研究人员发现,大部分人在每天醒来的一两个小时内头脑最清醒。

10:30:让眼睛离开屏幕休息一下。如果你使用电脑工作,那么每工作一小时,就让眼睛休息3分钟。

11:00:吃点水果。这是一种解决身体血糖下降的好方法。吃一个橙子或一些红色水果,这样做能同时补充体内的铁含量和维生素C含量。

13:00:在面包上加一些豆类蔬菜。你需要一顿可口的午餐,并且能够缓慢地释放能量。“烘烤的豆类食品富含纤维素,番茄酱可以当作是蔬菜的一部分。”维伦博士说。

14:30―15:30:午休一小会儿。雅典的一所大学研究发现,那些每天中午午休30分钟或更长时间,每周至少午休3次的人,因心脏病死亡的几率会下降37%。

16:00:喝杯酸奶。这样做可以稳定血糖水平。在每天三餐之间喝些酸牛奶,有利于心脏健康。

17:00―19:00:锻炼身体。根据体内的生物钟,这个时间是运动的最佳时间,舍菲尔德大**动学医生瑞沃·尼克说。

19:30:晚餐少吃点。晚饭吃太多,会引起血糖升高,并增加消化系统的负担,影响睡眠。晚饭应该多吃蔬菜,少吃富含卡路里和蛋白质的食物。吃饭时要细嚼慢咽。

21:45:看会电视。这个时间看会儿电视放松一下,有助于睡眠,但要注意,尽量不要躺在床上看电视,这会影响睡眠质量。

23:00:洗个热水澡。“体温的适当降低有助于放松和睡眠。”拉夫堡大学睡眠研究中心吉姆·霍恩教授说。

23:30:上床睡觉。如果你早上7点30起床,现在入睡可以保证你享受8小时充足的睡眠。

任何试图更改生物钟的行为,都将给身体留下莫名其妙的疾病,20、30年之后再后悔,已经来不及了。

一、晚上9-11点为免疫系统(淋巴)排毒时间,此段时间应安静或听音乐。

二、晚间11-凌晨1点,肝的排毒,需在熟睡中进行。

三、凌晨1-3点,胆的排毒,亦同。

四、凌晨3-5点,肺的排毒。此即为何咳嗽的人在这段时间咳得最剧烈,因排毒动作已走到肺;不应用止咳药,以免抑制废积物的排除。

五、凌晨5-7点,大肠的排毒,应上厕所排便。

六、凌晨7-9点,小肠大量吸收营养的时段,应吃早餐。疗病者最好早吃,在6点半前,养生者在7点半前,不吃早餐者应改变习惯,即使拖到9、10点吃都比不吃好。

七、半夜至凌晨4点为脊椎造血时段,必须熟睡,不宜熬夜。

记住身体健康作息时间表,安排好你的生活,让你的人生丰富多彩

健康

新闻联播30年精华

八 28th

由admin发表在网文 | 7 views

没有评论

1、___在钓鱼台国宾馆亲切会见了___,宾主进行了亲切的友好会谈。___高度赞赏了___,并对____一贯坚持“一个中国”的原则表示感谢。
2、___出访___,会见了___,高度赞扬两国关系,对___表示欢迎,支持___的立场。
3、外交部发言人___就___发表声明,对___表示遗憾,提出抗议,并将继续关注。
4、“___五”期间,我国___重点工程,突破___课题,创造效益___,实现利润___。
5、___省___市___县___村加强学习“___”重要精神,切实为农民解决事实。
6、___海关加大打击走私力度,破获一起特大走私案件,查获___共___件,价值人民币___元。
7、今天是___纪念日,我国各地群众,学生纷纷走上街头,宣传普及___知识,加强___教育。
8、___事丨件的原因已经彻底查明,有关责任人已被刑事拘留。
9、今天是___诞辰___周年纪念日,___举行座谈会,深入探讨___,缅怀这位___家。
10、___国群众不满___,举行抗议示威活动。
11、___国议会以___票支持,___票反对,___票反对,___票弃权通过这一项___协议。
12、___,___,请看今晚19点30分播出的___节目。

搞笑
1234»
    • 最新评论
    • 热门文章
    • 存档
    • 标签
    • 分类
    • 技术 (17)
      • .NET (4)
      • IIS (2)
      • jQuery (4)
      • SQL (3)
      • Visual C++ (4)
    • 网文 (16)
    • 随笔 (6)
    书评 健康 推荐 搞笑 杀毒 经典 视频 随笔 .NET ASP.NET ASP.NET MVC IIS jQuery Kindle Michael Jackson SQL Server ThinkPad VC Windows 7
    • 2010 年八月 (39)
    • jQuery UI Dialog控件中的表单无法正常提交的解决方法 (0)
    • ASP.NET中导入和导出标准Excel文件 (0)
    • 因端口被占用导致IIS无法启动的解决方法 (0)
    • 开源XHTML编辑器xhEditor (0)
    • 高人对四大杀毒软件(卡巴斯基、麦咖啡、诺顿、NOD32)的评价 (0)
    • 淘宝买卖交流爆笑全集 (0)
    • 女人们的友谊 男人们的友谊 (0)
    • 用一条SQL语句删除重复记录 (0)
    • “禁止在SQL Server中生成用户实例”的解决办法 (0)
    • jQuery UI Datepicker“’length’为空或不是对象”错误的解决方法 (0)
  • 页面

    • 关于

  •  Powered by Max Banner Ads 
  • 链接表

    • 我爱团
    • 文淵閣
    • 青岛博众帅先科技有限公司
  • 功能

    • 登录
    • 文章 RSS
    • 评论 RSS
    • WordPress.org
版权所有 © 2010 文淵博客
RSS订阅 XHTML 1.1 CSS 3.0 顶端