这是为什么??

vct 2000-09-04 11:44:00
#include <windows.h>
#include <commdlg.h>
#include <stdio.h>
#include <stdlib.h>
#include <commctrl.h>

#define ID_UPDOWN 1
HWND hwndUpdown,hwndTrack,hwndEdit;
HINSTANCE hInst;
int nPos;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass;
char lpszClassName[]="滚动类控件";
char lpszTitle[]="滚动类控件示例";
wndclass.style=0;
wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName;

if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
}
hwnd=CreateWindow(lpszClassName,lpszTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
250,250,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);

InitCommonControls();
hInst=hInstance;
while(GetMessage(&Msg,hwnd,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
hwndEdit=CreateWindow("EDIT",
NULL,WS_CHILD|WS_VISIBLE|WS_BORDER,60,50,100,20,
hwnd,NULL,hInst,NULL);
hwndTrack=CreateWindow(TRACKBAR_CLASS,NULL,WS_CHILD|WS_VISIBLE,60,110,100,20,
hwnd,NULL,hInst,NULL);
SendMessage(hwndTrack,TBM_SETRANGE,1,MAKELONG(0,100));
hwndUpdown=CreateUpDownControl(WS_VISIBLE|WS_BORDER|UDS_ALIGNRIGHT|
UDS_SETBUDDYINT|UDS_ARROWKEYS|UDS_WRAP,50,20,20,20,hwnd,ID_UPDOWN,hInst,
hwndEdit,100,0,0);
break;

case WM_VSCROLL:
if(hwndUpdown!=(HWND)lParam)
break;
nPos=SendMessage(hwndUpdown,UDM_GETPOS,0,0L);
SendMessage(hwndTrack,TBM_SETPOS,1,(LPARAM)nPos);
break;

case WM_HSCROLL:
if(hwndTrack!=(HWND)lParam)
break;
nPos=SendMessage(hwndTrack,TBM_GETPOS,0,0L);
SendMessage(hwndUpdown,UDM_SETPOS,0,(LPARAM)nPos);
break;

case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}




各位高手:
我是VC新手,今年才学到一些门道。所以我非常渴望有各位高手的帮助。在学习的过程中,我遇到了一些问题。在所给的附件的中,在编译的过程中,系统提示我的程序中第四十一行的InitCommonCtrols()和第六十行CreateUpDownControl()函数总是提示错误,提示的内容为:
滚动类控件.obj : error LNK2001: unresolved external symbol __imp__InitCommonControls@0
滚动类控件.obj : error LNK2001: unresolved external symbol __imp__CreateUpDownControl@48
导致以后的编译产生错误。我不知是为什么?
请各位高手提示。
另外,我很希望能结识些大连的VC编程高手。

如果有这样的高手,我希望能给我一个信,让我们共同进步。
谢谢各位高手的帮助。


我的email:vcbox@netease.com

...全文
145 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vct 2000-09-09
  • 打赏
  • 举报
回复
亲爱的Holly先生:
你好!
万分感谢你的再次回答我的问题。我在这里很感激你。但是,我照着您的方法改动我的程序,却还有同样的错误。如下示:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/滚动类控件.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
请您帮人帮到底,在为我解答一下好么?在这里我万分的感谢您。
你对我目前的情况所提出的建议很好。我对编译的具体过程可以说是一无所知。您能为我提点建议么?
好让我度过这个难关。
万分感谢你这位未谋面的老师兼朋友。如果可以的话,我很想和你交朋友,不知你是否可以交我这个朋友?
我叫于化鹏,大连人,今年大四。对计算机非常喜欢,并想以次为职业,因此我很希望结交一些计算机方面的朋友。你能介绍一下自己么?好让我更好的认识你?

谢谢!
于化鹏
Holly 2000-09-08
  • 打赏
  • 举报
回复
学习VC,相对VB之类的工具难度要大的多,因为VB代表的上层应用的程序员,本来VB就是面向大众化的,不是业界内的专用工具!
VC是底层到上的全功能工具,从操作系统到高级应用全部都是可以的,但VC的程序员如果要学习VB只是要知道VB的语法和熟悉各种控件而已,而VB转VC就不同,他们还需要学习编程的思想和底层的各种知识,VB不需要知道WINDOWS API可以编程,但VC就必须对WINDOWS API要了解才算入门,对程序的编译连接过程,程序从文件到内存的Load过程,程序运行的入口,操作系统的内存管理,操作系统的文件管理,进程线程管理...许多都要了解甚至精通,方能称之为高手!当然编程的技巧也算在内,这些对于纯粹的VB程序员来说简直无法逾越!
Holly 2000-09-08
  • 打赏
  • 举报
回复
你的程序创建时是用控制台程序创建的,所以连接器会找_main程序入口!
在你的Project->Settings->C/C++->Category:General->Preprocessor definations:输入框中将_CONSOLE换成_WINDOWS即可;

另外你的错误都是Linker(连接器)错误,你需要知道编译—>连接的过程!
上面的每一个帖子上我的名字Holly都是我的邮件地址的链接!
mqshi 2000-09-08
  • 打赏
  • 举报
回复
在文件开始加如下声明
#pragma comment(lib,"comctl32.lib")
另外在工程向导中使用Win32 Application

vct 2000-09-07
  • 打赏
  • 举报
回复
高手HOLLY:
你好!
看了你的答案,我收益匪浅。谢谢你的回答。
按照你的解答,我的问题解决了。但是,在编译的过程中,又出现了其他的问题。问题提示如下:
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/窗口类控件.exe : fatal error LNK1120: 1 unresolved externals

请问高手,这是为什么?
谢谢您的解答。
另外,我很想交你这个朋友。请你给我你的EMAIL 可以么?我好直接与你联系。谢谢!
另外,请你为我现在的情况提示点有意义的建议可以么?
我现在学习VC 已经一年半了。但是我现在总是觉得我好象还没有找到道似的。编程进步得很慢。而别的朋友学VB 的很快就有成绩了。这是为什么?告诉我好么?
谢谢!
我的信箱是:
email: vcbox@netease.com
向您致敬!
于化鹏

Holly 2000-09-05
  • 打赏
  • 举报
回复
在你的Project->Settings->Link->General->Object/library modules输入框中添加comctl32.lib;
你在查看函数帮助时,要注意有些系统函数需要添加连接库,在MSDN中通常有一段
QuickInfo

Windows NT/2000: Requires Windows NT 3.51 or later.
Windows 95/98: Requires Windows 95 or later.
Windows CE: Requires version 1.0 or later.
Header: Declared in commctrl.h.
Import Library: comctl32.lib.
其中Import Library就是需要添加的,如果你再遇到类似的情况,就需要添加说明中的library.
出现该错误的原因是在指定的obj中找不到链接的实体,只有声明;

16,471

社区成员

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

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

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