请教一个"标题具有五彩色变化的窗口"的VC++程序
//怎么我运行的时候会出错呢?这是什么回事啊,请指教.我是包含少了一个头文件
//了吗?还是怎么了?
//错误提示是:
/*--------------------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;
}
}
//了吗?还是怎么了?
//错误提示是:
/*--------------------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;
}
}
...全文
相关推荐
vc++ api 五彩风筝
在窗口中绘制一个五叶风车,每个叶片一种颜色,风车可按慢速、中速、快速三个档次旋转,速度自己调整。
绘制可旋转的彩色立方体
本实例制作一个可以由鼠标拖动事件控制的自由旋转立方体,无操作时,自己旋转,程序已在vc6.0 和vs09上通过
产业园区运营负责人如何利用平台挖掘企业技术需求并精准对接?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
Challenges in Functional Verification of PCIe 3.0 Devices.pdf
Challenges in Functional Verification of PCIe 3.0 Devices.pdf
轻美图纯PHP图库网站源码(内含1000+美图).zip
纯PHP的移动端图库站:把图片按「img/日期目录/」存放,自动按上传批次归组,前台封面卡瀑布流展示,手机电脑都能看。 不依赖数据库服务、不依赖框架,PHP自带SQLite即可。内含1000+美图,虚拟主机上传即用。



