Windows编程出现的问题

来源:互联网 发布:百度软件开发岗位职责 编辑:程序博客网 时间:2024/05/17 23:51

           我看Windows C程序设计看了差不多一个星期了,觉得Windows C程序设计也就这样,没觉得有什么难的。但是到到后来自己动手调试书上的代码时出现问题了,我仔细检查了好几遍应该没什么地方敲错的,但是还是有错误。还有就是我也在网上搜索了,发现有几位网友碰到跟我类似的问题,但是我还是没能解决。请指教!

--------------------Configuration: Sim - Win32 Debug--------------------
Linking...
Simpwin.obj : error LNK2001: unresolved external symbol "long __stdcall MainWndPro(struct HWND__ *,unsigned int,unsigned int,long)" (
?MainWndPro@@YGJPAUHWND__@@IIJ@Z)
Debug/Sim.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
Sim.exe - 1 error(s), 0 warning(s)

//Simpwin.h
//函数原型
// 过程
LRESULT CALLBACK MainWndPro(HWND,UINT,WPARAM,LPARAM);

//函数
BOOL InitApplication(HINSTANCE);
BOOL InitInstance(HINSTANCE,int);

//字符串
char *hello="窗口外的世界很精彩,窗口内的天地也很奇妙";

//程序:Simpwin.cpp
//目的:显示一个简单的窗口

#include <windows.h>
#include <string.h>
#include "simpwin.h"

HINSTANCE hInst;       //当前实例句柄
HWND hWndMain;         //主窗口句柄

//函数:WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
//用途:调用初始化函数,处理消息循环

int APIENTRY WinMain(
      HINSTANCE hInstance,   //当前实例句柄
      HINSTANCE hPreInstance, //前一个实例句柄
      LPSTR lpCmdLine,  //命令行字符串
      int nCmdShow)     //窗口显示方式
{
 MSG msg;

    //初始化窗口数据,并注册窗口类
 if(!InitApplication(hInstance))
  return FALSE;

 //创建和显示窗口,对应用程序进行必要的初始化
 if(!InitInstance(hInstance,nCmdShow))
  return FALSE;

 //进入消息循环,从应用程序消息队列中检取消息
 //当检取到消息是一条WM_QUIT消息时,就退出消息循环
 while(GetMessage(&msg,NULL,0,0))
 {
  //把虚拟键消息翻译为字符消息
  TranslateMessage(&msg);
  //把消息分配到相应的窗口过程中去
  DispatchMessage(&msg);
 }
 return msg.wParam;
}

//函数:InitApplication(HINSTANCE);
//用途:初始化窗口数据,并注册窗口类
BOOL InitApplication(
      HINSTANCE hInstance)//当前实例句柄
{
 WNDCLASS wcSimpwin;
 //填写窗口类结构,使得其参数描述主窗口各方面的属性
 wcSimpwin.style=0;
 wcSimpwin.lpfnWndProc=(WNDPROC)MainWndPro;
 wcSimpwin.cbClsExtra=0;
 wcSimpwin.cbWndExtra=0;
 wcSimpwin.hInstance=hInstance;
 wcSimpwin.hIcon=LoadIcon(NULL,IDI_APPLICATION);
 wcSimpwin.hCursor=LoadCursor(NULL,IDC_ARROW);
 wcSimpwin.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
 wcSimpwin.lpszMenuName=NULL;
 wcSimpwin.lpszClassName="SimpwinWClass";

 //对窗口类进行注册
 return RegisterClass(&wcSimpwin);
}

//函数:InitInstance(HINSTANCE,int)
//用途:保存实例句柄,并创建主窗口
BOOL InitInstance(
      HINSTANCE hInstance,  //实例句柄
      int nCmdShow)         //
{
 hInst=hInstance;

 hWndMain=CreateWindow(
  "SimpwinWClass",
  "我的窗口",
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,CW_USEDEFAULT,
  CW_USEDEFAULT,CW_USEDEFAULT,
  NULL,NULL,hInstance,NULL);

 //如果创建窗口失败,则返回FALSE
 if(!hWndMain)
  return FALSE;

 //让窗口显示出来;并更新其客户区;最后返回TRUE
 ShowWindow(hWndMain,nCmdShow);
 UpdateWindow(hWndMain);

 return TRUE;
}

//函数:MainWndProc(HWND,UINT,WPARAM,LPARAM)
//用途:处理主窗口消息
LRESULT CALLBACK MainWndProc(
        HWND hWnd,    //窗口句柄
        UINT message, //消息类型
        WPARAM wParam, //消息附带信息
        LPARAM lParam) //消息附带信息
{
 HDC hdc;
 PAINTSTRUCT ps;

 switch(message)
 {
 case WM_PAINT:
  hdc=BeginPaint(hWnd,&ps);
  TextOut(hdc,20,10,hello,lstrlen(hello));
  EndPaint(hWnd,&ps);
  break;

 case WM_DESTROY:    //消息:本窗口正将被销毁
  //请求退出窗口和应用程序
  PostQuitMessage(0);
  break;

 default:
  //调用默认窗口过程对未处理的消息进行必要的处理
  return(DefWindowProc(hWnd,message,wParam,lParam));
 }
 return 0;
}
     
    

 

原创粉丝点击