Rich Edit 不支持多国语言
Jan 31st, 2007 by song

打开 Rc文件把 RichEdit20A 修改为RichEdit20W
即搞定 幸得一网友指点困扰了我一天

VC6 unicode3步曲
Jan 31st, 2007 by song

第一步
Alt+F7 -> C/C++ -> 预处理程序定义 加入 _UNICODE
第二步
Alt+F7 -> Link (链接) -> 分类选(输出)-> 在入口点写入(wWinMainCRTStartup)
第三步
应该属于辅助了如果你提示没有找到mfc42u.lib等信息 在安装盘里搜索到 带U的这几个LIB 拷贝到
VC87/MFC/LIB下

关于在VC6.0中开发多国语言显示问题的总结—(
Jan 31st, 2007 by song

关于在VC6.0中开发多国语言显示问题的总结—(有源码作为部分参考)
我来到这里,快有一个月了.都是因为该死的多国语言显示的问题,才让我在这里面结识了诸位,呵呵,在这里面我感觉到CHN-Programer的和睦和团结,不由得有时引发阵阵振兴祖国软件的豪情(呵呵,说笑那).在这里我要感谢帮助过我的人.当然很多问题都还要靠自己,但是没有你们这些人,我可能快要被老板炒鱿鱼了.我真正开始搞vc才三个月时间,就这一个月到了csdn后,进步最快.下面是我关于这个月以来我一直在研究的,关于在某些不同Win操作平台下,在我们的操作系统环境下,开发别国语言显示的问题.用来给初级程序员作为参考.(测试是在对话框里面进行的).    我们都知道windows操作系统有支持ANSI和支持Unicode的版本,也有都支持的.其中,windows98只能支持ANSI系统环境.windows2000可以支持Unicode和NSI.windowsCE只支持Unicode.WindowsXP好象也是两个都支持.所以我们在开发多国语言的时候一般都选用windows2000.因为我们可以构件Unicode工程来支持多国语言的显示.(如果你不理解什么是Unicode可以参看< >的第二章.(在 Read the rest of this entry »

RichEdit Use Font
Jan 31st, 2007 by song


typedef struct _charformat
{
UINT  cbSize;
_WPAD  _wPad1;
DWORD  dwMask;
DWORD  dwEffects;
LONG  yHeight;
LONG  yOffset;
COLORREF crTextColor;
BYTE  bCharSet;
BYTE  bPitchAndFamily;
char  szFaceName[LF_FACESIZE];
_WPAD  _wPad2;
} CHARFORMATA;


相当的明白了,我就不用多说了;对于CRichEditCtrl,它提供的关于格式的接口有:
SetDefaultCharFormat(CHARFORMAT &cf);
SetSel(CHARFORMAT &cf);
大家都是明白人,一看便知,也不多说了,那么如何使用CFontDialog选择字体呢?
呵呵,其实很简单咯,因为有这个东西 => CFontDialog::GetCharFormat(CHARFORMAT &cf);
所以,总的实现可能就是这么简单的几句代码:




CFontDialog fontdlg;

 int ret = fontdlg.DoModal();
 if(IDOK == ret)
 {
  CHARFORMAT cf;
  fontdlg.GetCharFormat(cf);
  m_SendMsg.SetDefaultCharFormat(cf);
}

CRichEditCtrl 超文本编辑(MSN/QQ常用控件)(转)
Jan 31st, 2007 by song

一.常见问题
a.可以编译,不能执行的
AfxInitRichEdit();

b.升级默认的Riched版本(默认的有一些bug),如
可在InitInstance中添加
LoadLibrary(“RICHED20.DLL”)
最后注意 FreeLibrary

如果是CRichEditView基类的可用
BOOL CXXXXXXView::PreCreateWindow(CREATESTRUCT& cs)
{
//装入rich edit version 2.0
if (LoadLibraryA(“RICHED20.DLL”) == NULL)
{
AfxMessageBox(_T(“Fail to load \”riched20.dll\”.”),MB_OK | MB_ICONERROR);
PostMessage(WM_QUIT,0,0);
return FALSE;
}

m_strClass = RICHEDIT_CLASSA;//for 2.0 class

return CRichEditView::PreCreateWindow(cs);
} Read the rest of this entry »

【转】CEdit & CRichEdit 使用技巧
Jan 31st, 2007 by song

作者:lixiaosan
日期:04/07/2006

注:
       m_edit1代表ID为IDC_EDIT1的CEdit控件的control类型的变量
       m_richedit1代表ID为IDC_RICHEDIT1的CRichEditCtrl控件的control类型的变量

——————————————————————————–
1.设置edit只读属性

   方法一:
               m_edit1.SetReadOnly(TRUE);
   方法二:
               ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);
Read the rest of this entry »

如何用SendMessage模拟某一按钮的点击事件
Jan 29th, 2007 by song

如何用SendMessage模拟某一按钮的点击事件

今天在写程序的时候,用到了进程间的通信,上网查了些相关的资料,一般都是通过消息、共享内存、 socket,管道(Pipe),信箱(Mailslot),等等。因为我进程间通信的时候数据量不太大,所以就先测试了一下消息。

一般情况下,用消息来实现进程通信相对比较简单,自定义消息、手动添加消息映射、编写响应函数,发送端先FindWindow(),然后就向目标进程SendMessage()。自定义消息的测试没有什么问题,但在向目标进程发送系统消息时遇到了些问题,发送WM_CLOSE消息也可以,但是在我尝试发送按钮消息时,遇到了些麻烦,在查资料,并多次测试后终于搞定,看到网上一些资料都没有明确的答案,就把我的一些体会发在这里,有朋友遇到这个问题时也就少走点弯路。当然,我个人水平也很菜,高手就不要看了!

自定义消息和消息映射就不多说了,获取窗口进程:
CWnd *pWnd=CWnd::FindWindow(NULL,str);

模拟其中窗口上的按钮点击事件可以采用以下的方法: Read the rest of this entry »

vc编程技巧之简单高效的字符串转换方法
Jan 26th, 2007 by song


vc编程技巧之简单高效的字符串转换方法
首先在需要作转换的作用域(比如某函数内)内加上这句
USES_CONVERSION;

然后如果是要从ANSI字符串转到UNICODE就调用
wstr = A2W(astr);

反之则调用
astr = W2A(wstr);

对了不要忘记包含必要的头文件

[code]#include <atlbase.h>[/code]


这样要比直接调用MultiByteToWideChar和WideCharToMultiByte简单多了吧。而且由于这
组宏内部使用的是栈空间所以效率上也很高。

控制其他程序
Jan 25th, 2007 by song

转自 http://jonsoft.cn/blog

基本思路就是:
1)用FindWindow()找到目标程序的窗口Handle。
2)找到文本框的Handle,以及按钮的MessageID,
3)用SendMessage()方法设置文字,并触发事件。

我们先打开要控制的程序,如何将他隐藏就参看前几天的文章。
“后台调用外部程序的完美实现(Delphi)后台调用外部程序的完美实现(Delphi“)”,这里我只要谈如何用消息来实现和程序的控制。
首先我们得借助spy++,VC的工具有,各位就不用忙下载了。用其它的工具也可以了,这里只要是为了可以得到程序里面的控件的ID,
第一步先用,Handle:= FindWindow(nil, Pchar(‘title’));找到程序的窗口。
第二步:Handle1:=GetDlgItem(Handle,$0000040E);利用控件的ID得到控件的句柄,现在我们可以对句柄进行操作了。
第三步:利用handle的消息触发事件。在这里我的Handle1是一个按钮,我可以向它发送一个按下的消息。
SendMessage(Handle1,BM_CLICK,0,0);
这样就相当于你自己点击了另一个程序中的某个按钮。当然你还可以有更多的控制。

用spy++可以方便地找到控件的ID。
偏移量 功能
000003FA 退出程序
000003EE 输出目录
000003F0 关于
000003F1   帮助
000003F2    访问网页
000003F3    注册
000003F4    打开一个工程文件
000003F5    保存一个工程文件        
000003F8    开始转换
0000040E    选项
这是我今天早上做的,我将找到的句柄 给HANDLE1,然后发送消息给他来实现了对另一个程序的控制

在ActiveX控件中引入窗体技术(转 )
Jan 24th, 2007 by song

一、引入Dialog技术

—- 下面介绍在制作ActiveX控件时引入有模式对话框技术,制作步骤如下:

创建一新的MFC ActiveX ControlWizard项目,取名为Hello,其他用缺省选项;
 
在ResourceView页中新增一对话框资源,命名为IDD_HELLODIALOG,可以在对话框上放自己的控件;
 
为对话框资源IDD_HELLODIALOG创建新类CHelloDialog,从CDialog继承;
 
确认在HelloCtrl.h中已加入语句#include “HelloDialog.h”,为CHelloCtrl类添加成员变量CHelloDialog m_helloDialog;
 
用ClassWizard在Automation页中为CHelloCtrl添加一方法void DoHello(),外部名亦为DoHello;
void CHelloCtrl::DoHello()
{
// 显示对话框
m_helloDialog.DoModal();
} Read the rest of this entry »

SIDEBAR
»
S
I
D
E
B
A
R
«
»  Substance:WordPress   »