[DrawText][改变][输出]DrawText如何改变输出的字体

09月 18th, 2008 by admin
Posted in VC/MFC | No Comments »

原码是

hdc = BeginPaint(hWnd, &ps);
RECT rt;
GetClientRect(hWnd, &rt);

DrawText(hdc, szHello, strlen(szHello), &rt, DT_LEFT);
EndPaint(hWnd, &ps);

是输出SZHELLO,想改变这个输出的字体,应该怎么做呢??

搞定,结帖给分!

Tags: , , ,

[fstream][文件][输出]用fstream写文件输出中文(UNICODE)xp下正常但在2003 server系统下显示很奇怪的字符,怎么回事

09月 15th, 2008 by admin
Posted in VC/MFC | No Comments »

用fstream写文件输出中文(UNICODE),xp下正常,但在2003 server系统下显示很奇怪的字符,怎么回事?
代码如下:
void CLogFile::Writeln(tstring strVal)
{
tstring outData = strVal + _T("
");

    fstream  fos;
fos.open("D:\logfile.txt", ios::out | ios::app ,0);
#ifdef UNICODE
    USES_CONVERSION;
    std::string outStr = W2A(outData.c_str());
fos.write(outStr.c_str(),outStr.size());
#else
    fos.write(outData.c_str(),outData.size());
#endif
    fos.close(); 
}

Tags: , , ,

[VC2008printf][输出][输出]VC2008printf输出到“输出窗口”

09月 11th, 2008 by admin
Posted in VC/MFC | No Comments »

在VC2008中简单的写个printf("OK");按F5,就打开一个命令行窗口,闪一个。我知道显示结果就在这上面了。
可是我记得在VC6中printf是会显示在“输出窗口”的
请问在2008中怎么让printf的打印输出到“输出窗口”而不只显示在命令行上?
谢谢!

VC6的也不是在输出窗口的.
倒是有TRACE是输出到输出窗口

我是建的控制台程序

有办法让它输出到“输出窗口”吗?

TRACE
OutputDebugString

TRACE调试宏

用TRACE

这个好像只能在MFC中使用吧

Tags: ,

[view][输出][字符串]请问有关view中输出字符串的问题

09月 3rd, 2008 by admin
Posted in VC/MFC | No Comments »

多文档界面,分割窗口
其中,一个窗口用于显示文本,文本数量不一定,大约每次要显示几百个CString

这些CString中,某些特殊子串要用其他的颜色将其凸显出来

请问:

1、这个用于显示的view应该从哪个继承而来?CScrollView   CEditView?按照我的需要,从哪个类继承而来比较好,比较简单?我只改变部分文字的颜色,对字体没有要求。

2、具体做的时候可能还会碰到很多问题,比如说滚动条拉动或窗口的大小改变时,视图需要刷新,文本的自动换行等,能指点一下大概吗?大致指点一下也可以让我节省不少时间。(最好能给出一个简单的例子)

谢谢!

有个类CRichEditview,复文本编辑视图类,封装了复文本编辑控件功能的视图类,你最好从这个类继承,可以最少编码.

CEditView,文本编辑视图类,封装了编辑控件功能的视图类.也可以用着看看

to   楼上

我知道CRichEditView类,但是这个类在VC6.0下,从new   class对话框中是不能直接继承的,我不知道该怎么用

Tags: , , ,

[editbox][输出]怎样在editbox中输出换行符能不能用

08月 5th, 2008 by admin
Posted in VC/MFC | No Comments »

就是在editbox中输出:
                        aaaaaa
                        bbbbbb

Tags: , ,

[CListBox][输出][乱码]为什么CListBox会输出乱码啊大家帮帮忙哈谢谢

08月 1st, 2008 by admin
Posted in VC/MFC | No Comments »

我先想CEdit中输入数据:
m_edit1.GetLine(0,otherstr,100);//其中otherstr的定义为char otherstr[100];
        当我输入aa是,我调试了以下otherstr的内容为aa+一个乱码。
当我在CListBox中输出时,输出了aa+乱码,输出方式如下:
        CString str=otherstr;
        m_list1.InsertString(0,str);
我现在想输出aa不加哪个乱码,我从哪里入手好,输入还是输出?应该怎么盖,请高手指点,谢谢。

在那里初始化???谢谢

就在 char otherstr[100]; 声明之后

可是没有成功啊,还是有那个乱吗啊,是不是空件的局限性啊?

m_edit1是否设置了Multiline 为true,
还有就是m_edit1.GetLine(0,otherstr,99);//要不当第0 行字符超过100时,会益出

Tags: , , ,

[静态][文本][输出]有关在静态文本输出内容的问题请大家帮帮忙哈

07月 19th, 2008 by admin
Posted in VC/MFC | No Comments »

我在Dialog2建了一个静态文本,并定义为CStatic m_st,目前的进度为我实现了用Dialog1调用Dialog2.Dialog2是和新类相关的.
我还定义了一些在类之间能用的静态变量,并初始化过了,定义如下:
static char m_message[100000];
static char m_emalmsg[100000];
static char m_saymsg[10000];
static CString m_rstr;
static CString m_allstr;
static CString m_combo11;
static CString m_combo22;
我想实现在Dialog1调用Dialog2时,在Dialog2中的静态文本中输出这些变量.
现在出现两个问题,请大家帮忙,谢谢
一:
    我在Dialog2的类中添家了OnInitDialog(),在这个函数中用
    CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
    pStatic->SetWindowText(CPUBLIC::m_rstr);
    可是在静态文本中没有内容出现,为什么啊?CPUBLIC是我控制类之间全局变量的新类.
二:   
    我想实现每个数据输出时占一行,应该怎么做?应该调用那些函数啊?
请大家帮帮忙哈,谢谢.

请将 IDC_STATIC 改为别的名称

输出要换行的话请用 Edit 控件, CEdit 代替 CStatic

CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
那个红色部分标记的id不能用系统默认的,要自己起个名字才行

第一个问题解决了,是我忘了输入内容,汗……
第二个那个
怎么用啊,我是这么用的:
pStatic->SetWindowText(CPUBLIC::m_message);
pStatic->SetWindowText("
");
pStatic->SetWindowText(CPUBLIC::m_emalmsg);
可是没有换行啊,再指点下.谢谢.

引用 4 楼 point_net 的回复:
第一个问题解决了,是我忘了输入内容,汗……
第二个那个
怎么用啊,我是这么用的:
pStatic->SetWindowText(CPUBLIC::m_message);
pStatic->SetWindowText("
");
pStatic->SetWindowText(CPUBLIC::m_emalmsg);
可是没有换行啊,再指点下.谢谢.

"
" 和 字符串先接起来

再 SetWindowText

Tags: , , ,

[创建][窗体][输出]请问要在创建的窗体中输出数字,要用什么函数,其功能相当于C++中的cout<<a和C语言中的sprint("%d",a);

06月 14th, 2008 by admin
Posted in VC/MFC | No Comments »

请问要在创建的窗体中输出数字,要用什么函数,其功能相当于C++中的cout < <a和C语言中的sprint("%d",a);

先打印到字符串再输出,MFC中常用CString,输出字符串可以用TextOut,如果是设置窗口标题或者控件文字,用SetWindowText就可以。

为什么在窗体中不能使用COUT < <;

Tags: , , ,

[输出][TCHAR][wParam]输出的(TCHAR)wParam全是空格

06月 1st, 2008 by admin
Posted in VC/MFC | No Comments »

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define CALCUL_BUFF(x,y) *(pBuff+y*cxBuff+x)
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
static TCHAR szAppName[]=TEXT("SimpleCaret");
static TCHAR szClassName[]=TEXT("SimpleCaretClass");
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName=szClassName;
wndclass.lpszMenuName=NULL;
wndclass.style=CS_VREDRAW &brvbarCS_HREDRAW;
if(!RegisterClass(&wndclass))
{
MessageBox(hwnd,TEXT("Wrong"),szAppName,MB_OK);
return 0;
}
hwnd=CreateWindow(szClassName,TEXT("KeyScroll"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static int cxChar,cyChar;
static int cxClient,cyClient;
static int cxBuff,cyBuff;
static int xCaret,yCaret;
static TCHAR *pBuff=NULL;
HDC hdc;
int x,y,i;
PAINTSTRUCT ps;
TEXTMETRIC tm;
switch(message)
{
case WM_CREATE:
hdc=GetDC(hwnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
GetTextMetrics(hdc,&tm);
cxChar=tm.tmAveCharWidth;
cyChar=tm.tmHeight;
ReleaseDC(hwnd,hdc);
return 0;
case WM_SIZE:
cxClient=LOWORD(lParam);
cyClient=HIWORD(lParam);
cxBuff=max(1,cxClient/cxChar);
cyBuff=max(1,cyClient/cyChar);
if(pBuff!=NULL)
free(pBuff);
pBuff=(TCHAR *)malloc(cxBuff*cyBuff*sizeof(TCHAR));
for(y=0;y <cyBuff;y++)
for(x=0;x <cxBuff;x++)
CALCUL_BUFF(x,y)=' ';
xCaret=0;
yCaret=0;
InvalidateRect(hwnd,NULL,TRUE);
return 0;
case WM_SETFOCUS:
CreateCaret(hwnd,(HBITMAP)1,cxChar,cyChar);
SetCaretPos(xCaret*cxChar,yCaret*cyChar);
ShowCaret(hwnd);
return 0;
case WM_KILLFOCUS:
HideCaret(hwnd);
DestroyCaret();
return 0;
case WM_KEYDOWN:
switch(wParam)
{
case VK_LEFT:
xCaret=max(xCaret-1,0);
break;
case VK_RIGHT:
xCaret=min(xCaret+1,cxBuff-1);
break;
case VK_UP:
yCaret=max(yCaret-1,0);
break;
case VK_DOWN:
yCaret=min(yCaret+1,cyBuff-1);
break;
case VK_DELETE:
for(x=xCaret;x <cxBuff-1;x++)
CALCUL_BUFF(x,yCaret)=CALCUL_BUFF(x+1,yCaret);
CALCUL_BUFF(cxBuff-1,yCaret)=' ';
HideCaret(hwnd);
hdc=GetDC(hwnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc,xCaret*cyChar,yCaret*cyChar,&CALCUL_BUFF(xCaret,yCaret),cxBuff-xCaret);
ReleaseDC(hwnd,hdc);
ShowCaret(hwnd);
break;
case VK_BACK:
if(xCaret>0)
{
xCaret–;
SendMessage(hwnd,WM_KEYDOWN,VK_DELETE,1);
}
break;
}
SetCaretPos(xCaret*cxChar,yCaret*cyChar);
return 0;

case WM_CHAR:
for(i=0;i <(int)LOWORD(lParam);i++)
{
if(wParam>='a'&&wParam <='z' &brvbar &brvbarwParam>='A'&&wParam <='Z')
{
CALCUL_BUFF(xCaret,yCaret)=(TCHAR)wParam;
HideCaret(hwnd);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(hdc,xCaret*cxChar,yCaret*cyChar,&CALCUL_BUFF(xCaret,yCaret),1);
ReleaseDC(hwnd,hdc);
ShowCaret(hwnd);
if(++xCaret==cxBuff)
{
xCaret=0;
if(++yCaret==cyBuff)
yCaret=0;
}
break;
}
else
return 0;
}
SetCaretPos(xCaret*cxChar,yCaret*cyChar);
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
for(y=0;y <cyBuff;y++)
TextOut(hdc,0,y*cyChar,&CALCUL_BUFF(0,y),cxBuff);
EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}

为什么响应WM_CHAR消息,输出的是空格

在WM_CHAR中,hdc没有初始化。

Tags: , , ,

[输出][信息][输出]vc中怎么在输出信息框中输出自己想要的字符?

05月 27th, 2008 by admin
Posted in VC/MFC | No Comments »

详细点说就是在输出结果那块显示我要的字符信息,不象MessageBox();那样是弹出对话框的方式
在线等,望好心人帮忙

1. GetDlgItem(IDC_EDIT_SUM)->SetWindowText("123");

详细点说就是在输出结果那块显示我要的字符信息
==到底是哪里?你的对话框中?还是DEBUG窗口中?

#ifdef _DEBUG
void Trace(char *fmt, …)
{
char out[1024];
va_list body;
va_start(body, fmt);
vsprintf(out, fmt, body);    // 译注:格式化输入的字符串 fmtt
va_end(body);                //      到输出字符串 ou
OutputDebugString(out);      // 译注:输出格式化后的字符串到调试器
}
#else
void Trace( char *fmt, … )
{
        char out[1024];
va_list body;
va_start(body, fmt);
vsprintf(out, fmt, body);    // 译注:格式化输入的字符串 fmtt
va_end(body);                //      到输出字符串 ou
OutputDebugString(out);      // 译注:输出格式化后的字符串到调试器

}
#endif

把这个函数加到.cpp的前面位置,然后在文件中Trace("aa"),或者Trace(Str);

DEBUG窗口中呢

TRACE(_T("XXXXXXXXXXXXXXXXXXX: %d
"), n);

TRACE(str);

谢谢各位了!

Tags: ,