请教一个"标题具有五彩色变化的窗口"的VC++程序

kinglovar 2004-04-02 09:05:55
//怎么我运行的时候会出错呢?这是什么回事啊,请指教.我是包含少了一个头文件
//了吗?还是怎么了?
//错误提示是:
/*--------------------Configuration: MultiClrdCaption - Win32 Debug--------------------
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/MultiClrdCaption.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

MultiClrdCaption.exe - 4 error(s), 0 warning(s)*/


#include<afxwin.h>
#include<afxext.h>
class CMyApp : public CWinApp{
public:
virtual BOOL InitInstance();
};

class CMyWnd : public CFrameWnd{
protected:
void PaintTitleBar(BOOL bActive);
afx_msg void OnNcPaint();
afx_msg BOOL OnNcActivate(BOOL bActive);
DECLARE_MESSAGE_MAP();
};

BOOL CMyApp::InitInstance(){
CMyWnd *pWnd = new CMyWnd;
pWnd->Create(NULL,"having fine colors windows caption");
pWnd->ShowWindow(SW_SHOW);
pWnd->UpdateWindow();
m_pMainWnd=pWnd;
return true;
}

CMyApp MyApp;
BEGIN_MESSAGE_MAP(CMyWnd,CWnd)
ON_WM_NCPAINT()
ON_WM_NCACTIVATE()
END_MESSAGE_MAP()

void CMyWnd::PaintTitleBar(BOOL bActive){
CWindowDC dc(this);
CRect rc;
GetWindowRect(rc);
UINT nWidth=rc.Width();
UINT nXFrame=GetSystemMetrics(SM_CXSIZEFRAME);
UINT nYFrame=GetSystemMetrics(SM_CYSIZEFRAME);
UINT nYCaption=GetSystemMetrics(SM_CYCAPTION);
COLORREF cr;
if(bActive){
cr=GetSysColor(COLOR_ACTIVECAPTION);
for(UINT j=nYFrame;j<=nYFrame+nYCaption;j++){
for(UINT i=nXFrame;i<=nWidth/2;i++){
UINT nLen=nWidth/2-nXFrame+1;
if (dc.GetPixel(i,j)==cr){
dc.SetPixelV(i,j,RGB(255-255*(i-nXFrame)/nLen,255*(i-nXFrame)/nLen,0));
}
}
for (i=nWidth/2+1;i<=nWidth-nXFrame;i++){
UINT nLen=nWidth/2-nXFrame-1+1;
if(dc.GetPixel(i,j)==cr){
dc.SetPixelV(i,j,RGB(0,255-255*(i-nWidth/2-1)/nLen,255*(i-nWidth/2-1)/nLen));
}
}
}
}else{
cr=GetSysColor(COLOR_INACTIVECAPTION);
for(UINT j=nYFrame;j<=nYFrame+nYCaption-1;j++){
for(UINT i=nXFrame;i<=nWidth/2;i++){
UINT nLen=nWidth/2-nXFrame;
if(dc.GetPixel(i,j)==cr){
dc.SetPixelV(i,j,RGB(192*(i-nXFrame)/nLen,192*(i-nXFrame)/nLen,192*(i-nXFrame)/nLen));
}
}
for(i=nWidth/2+1;i<=nWidth-nXFrame;i++){
UINT nLen=nWidth/2-nXFrame-1;
if(dc.GetPixel(i,j)==cr){
dc.SetPixelV(i,j,RGB(192-192*(i-nWidth/2)/nLen,192-192*(i-nWidth/2)/nLen,192-192*(i-nWidth/2)/nLen));
}
}
}
}
}

void CMyWnd::OnNcPaint(){
CFrameWnd::OnNcPaint();
if(::GetActiveWindow()==GetSafeHwnd())
PaintTitleBar(TRUE);
else
PaintTitleBar(FALSE);
}

BOOL CMyWnd::OnNcActivate(BOOL bActive){
CFrameWnd::OnNcActivate(bActive);
if(bActive){
PaintTitleBar(TRUE);
return FALSE;
}else{
PaintTitleBar(FALSE);
return FALSE;
}
}
...全文
52 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglovar 2004-04-03
  • 打赏
  • 举报
回复
我编译的时候是没错的,只是在连接的时候出错了,为什么?
薛定谔之死猫 2004-04-02
  • 打赏
  • 举报
回复
会不会是C运行库选择的问题
远古猛犸象 2004-04-02
  • 打赏
  • 举报
回复
你的编译设置不对,是不是当作控制台程序编译了?
friendkey 2004-04-02
  • 打赏
  • 举报
回复
一般是有声明而没有实现
或者就是你的编译器版本问题
酒红绿叶 2004-04-02
  • 打赏
  • 举报
回复
这个类似的错误,我也犯过,
请看看是否有头文件的重复定义!
和全局函数的定义!
以及,是否有函数删除了函数体,但是声明却没有删!!

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧