hur.cn - 华软网

 热门搜索

MFC程序主界面只能通过写代码来完成吗?

  作者:未知    来源:网络    更新时间:2011/4/15
就是菜单,按钮下面的那一片白……不能通过UI界面编辑吗?或者说只能通过写代码来完成?
---华软 网友回答---
可以编辑呀,添加资源,有菜单栏,对话框,等等的资源。
---华软网友回复---
就是菜单,按钮下面的那一片白
------------------------------

---华软网友回复---
这个貌似只能自绘或者贴图了
---华软网友回复---
楼主说的是MFC的单文档和多文档吧,这个没有对话框那样可以直接把控件拖上去的功能,或多或少的都要写个几行代码!
---华软网友回复---
当然,文档的显示是需要自己编程的,只有对话框是可视化的
---华软网友回复---
引用 4 楼 luchao002 的回复:
楼主说的是MFC的单文档和多文档吧,这个没有对话框那样可以直接把控件拖上去的功能,或多或少的都要写个几行代码!


额,我要求不高,就是希望那一片白能显示一幅欢迎画面就好。具体将来应该怎么做呢?
---华软网友回复---
在CXXXView的OnDraw里面
pDC->TextOut(0,0,"欢迎");
---华软网友回复---
LZ可以参考这篇
http://wenku.baidu.com/view/91e09c1fc5da50e2524d7fbd.html
---华软网友回复---
引用 7 楼 king_hhuang 的回复:
在CXXXView的OnDraw里面
pDC->TextOut(0,0,"欢迎");


C++">void CabcView::OnDraw(CDC* pDC)
{
CabcDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(0,0,"欢迎");
if (!pDoc)
return;

// TODO: 在此处为本机数据添加绘制代码
}


这样写报错:
rror C2664: “BOOL CDC::TextOutW(int,int,const CString &)”: 不能将参数 3 从“const char [5]”转换为“const CString &”
1>          原因如下: 无法从“const char [5]”转换为“const CString”
1>          class“ATL::CStringT<BaseType,StringTraits>”的构造函数声明为“explicit”
1>          with
1>          [
1>              BaseType=wchar_t,
1>              StringTraits=StrTraitMFC_DLL<wchar_t>
1>          ]
1>
1>生成失败。
---华软网友回复---
这样该
pDC->TextOut(0,0, _T("欢迎"));

---华软网友回复---
引用 6 楼 ichijouziken 的回复:
引用 4 楼 luchao002 的回复:
楼主说的是MFC的单文档和多文档吧,这个没有对话框那样可以直接把控件拖上去的功能,或多或少的都要写个几行代码!


额,我要求不高,就是希望那一片白能显示一幅欢迎画面就好。具体将来应该怎么做呢?

欢迎的画面?是要用位图?

hFile = CreateFile (TEXT("Travel.bmp"), GENERIC_READ, FILE_SHARE_READ, NULL,
                         OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL) ;

if (hFile == INVALID_HANDLE_VALUE)
       return  ;

dwFilesize = GetFileSize (hFile, &dwHighSize) ;

if (dwHighSize)
{
CloseHandle (hFile) ;
return  ;
}

pbmpfh = (BITMAPFILEHEADER *) malloc (dwFilesize) ;

if (!pbmpfh)
{
CloseHandle (hFile) ;
return ;
}

bSuccess = ReadFile (hFile, pbmpfh, dwFilesize, &dwBytesRead, NULL) ;
CloseHandle (hFile) ;

if (!bSuccess || (dwBytesRead != dwFilesize)
|| (pbmpfh->bfType != * (WORD *) "BM")
|| (pbmpfh->bfSize != dwFilesize))
{
free (pbmpfh) ;
return ;
}

pbmi = (BITMAPINFO *)(pbmpfh+1) ;
pbe  = (BYTE *)(pbmpfh+pbmpfh->bfOffBits) ;

if (pbmi->bmiHeader.biSize == sizeof (BITMAPCOREHEADER))
{
cxDib = ((BITMAPCOREHEADER *) pbmi)->bcWidth ;
cyDib = ((BITMAPCOREHEADER *) pbmi)->bcHeight ;
}
else
{
cxDib = pbmi->bmiHeader.biWidth ;
cyDib = pbmi->bmiHeader.biHeight ;

}

SetDIBitsToDevice (hdc, 0, 0, 950, 687, 
               0, 0, 0, cyDib,
      pbe, pbmi,DIB_RGB_COLORS) ;  //显示位图自己改一下用strechblt
---华软网友回复---
class CBitmap
{
public:
BOOL                 bSuccess ;
HANDLE               hFile ;
DWORD                dwFilesize, dwHighSize, dwBytesRead ;
BITMAPFILEHEADER  *  pbmpfh ;
           int           cxDib, cyDib ;
BITMAPINFO        *  pbmi ;
       BYTE       *  pbe  ;

public:
void                 LoadCBitmap(HDC hdc, int cxClient, int cyClient) ;
};      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。