白痴的问题

huangxiaofei 2002-06-14 12:55:07
由于我得水平低下,因此这个问题对于许多人来讲简直是白痴所提出得。在此特别说明,这是一个白痴级得问题。
我在使用VISUAL C++的时候,希望能够不使用MFC WIZARD,而通过纯编程的方式声明一个空的窗体并将它显示在屏幕上,我也确实地找到了这样的一段例子,并信心十足地将它输入了,但是VISUAL c++并不能正常地编译通过,而是说我有了错误。在我仔细地检查了程序的输入没有问题以后,我就不明白是什么原因了。莫非是除了输入程序,还要做什么别的处理?
希望有哪为高手能屈尊回答一下我这个微不足道的问题,如何直接通过编程建立一个空的窗口,具体的实现过程是怎样的。
...全文
112 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
egyptcaesar 2002-06-14
  • 打赏
  • 举报
回复
//hello.cpp
#include <afxwin.h>

#define IDC_BUTTON 100
//delcare the application class

class CHelloApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};

CHelloApp HelloApp;

class CHelloWindow: public CFrameWnd
{
//CStatic *cs;
//CFont * font;
CButton *button;
public:
CHelloWindow();
~CHelloWindow();
afx_msg void PushProcess();
DECLARE_MESSAGE_MAP()
};


void CHelloWindow::PushProcess()
{
//MessageBeep(0xFFFFFFFF);
MessageBox( "success",NULL, MB_OK );
}

BEGIN_MESSAGE_MAP(CHelloWindow,CFrameWnd)
ON_BN_CLICKED(IDC_BUTTON,PushProcess)
END_MESSAGE_MAP()


BOOL CHelloApp::InitInstance()
{
m_pMainWnd= new CHelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}



CHelloWindow::CHelloWindow()
{

CRect r;
// Create Windows
Create(NULL,"Hello World Text",WS_OVERLAPPEDWINDOW,CRect(0,0,200,200));
// Create Static



GetClientRect(&r);
r.InflateRect( -20, -20 );

/* cs=new CStatic();
cs->Create("Hello World",WS_CHILD|WS_VISIBLE|SS_CENTER,r,this);

font= new CFont();
font->CreateFont(36,0,0,0,700,0,0,0,
ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,
"arial");
cs->SetFont(font);
*/
button = new CButton();
button->Create(" Push Me ",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,r,this,IDC_BUTTON);


}

CHelloWindow::~CHelloWindow()
{
delete button;
}
bflyswh 2002-06-14
  • 打赏
  • 举报
回复
你的程序用到了MFC,所以必须包含所需的dll,否则无法链接成功。
huangxiaofei 2002-06-14
  • 打赏
  • 举报
回复
程序和我看到的例子非常地象。请问在编译时的PROJECT - SETTING下选择MFC是什么作用,我以前在编译的时候没有选择这一项,这是否就是我的程序编译无法通过的原因呢。
egyptcaesar 2002-06-14
  • 打赏
  • 举报
回复
win32 SDK

#include "stdafx.h"
#include <windows.h>


LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;



int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("HelloWin") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wc ;



wc.style = CS_HREDRAW | CS_VREDRAW ;

wc.lpfnWndProc = WndProc ;

wc.cbClsExtra = 0 ;

wc.cbWndExtra = 0 ;

wc.hInstance = hInstance ;

wc.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wc.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wc.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;

wc.lpszMenuName = NULL ;

wc.lpszClassName = szAppName ;




if (!RegisterClass (&wc))

{

MessageBox (NULL, TEXT ("This program requires Windows NT!"),

szAppName, MB_ICONERROR) ;

return 0 ;

}

hwnd = CreateWindow (szAppName, // window class name

TEXT ("欢迎你的到来!"), // window caption

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT, // initial x position

CW_USEDEFAULT, // initial y position

CW_USEDEFAULT, // initial x size

CW_USEDEFAULT, // initial y size

NULL, // parent window handle

NULL, // window menu handle

hInstance, // program instance handle

NULL) ; // creation parameters



ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;



while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}





LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;



switch (message)

{



case WM_PAINT:

hdc = BeginPaint (hwnd, &ps) ;



GetClientRect (hwnd, &rect) ;



DrawText (hdc, TEXT ("你好,欢迎你来到VC之路!"), -1, &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

EndPaint (hwnd, &ps) ;

return 0 ;



case WM_DESTROY:

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}
egyptcaesar 2002-06-14
  • 打赏
  • 举报
回复
编译时在projec->setting下选中使用MFC

16,548

社区成员

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

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

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