谁指导我下帮把我编的窗口程序做成MFC程序吧……

自己编了一个简单的窗口函数,但想把它改成一个MFC程序……
自己写窗口函数时是在一个相应用户操作的函数Main_OnCommand里面用switch语句,对不同的控件ID相应不同的操作。但在自己新建的MFC程序里我都不知道在哪写这个switch语句……求指点
以下是我编的对话框程序,得怎么把它做成MFC的?

MFC已集成了许多控件及其相应操作
你先新建了一个MFC (.EXE)的工程
然后选择对话框窗口,其他选项默认

然后根据你自己的需要,在资源视图那里,把需要的控件从工具栏直接拉进去
如果你不知道工具栏上的图标代表什么控件,把鼠标停留在那里就会提示的了

然后按你这图:
已用标签,未用标签都可以用静态文本来实现
从工具栏拉一个静态文本进来,然后选中该控件,右键属性,设置文本名字为你需要的“已用标签”,再来一个,设置为“未用标签”

按钮控件,同样的方法修改按钮名字,然后对于点击该按钮要实现什么功能,由你自己实现,双击该按钮之后,就会跳到该按钮的单击响应函数那里,然后在那添加你需要的功能

还有一个组合框,就是未用标签那里的下拉列表,添加该控件后,要显示下拉的选项,必须先点击该控件的下三角形,然后该控件在底边的中间处,按住鼠标向下拉,这样就能显示下拉列表

还有几个编辑框,用来接受输入的

大概就这样,不懂HI 我
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-18
哎,分数怎么高,
不知道你的是什么我的是VS,
在建立的时候,建立win32 application;然后建立,不要选择空项目;
会自动生成,产生窗口的Windows程序,你直接编译运行,产生窗口;

然后再楼上的程序改一下;就是你的窗口函数的名,要和注册窗口的窗口名字一致,具体的我就该下楼上的吧, wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;//
wndcls.lpszClassName="Weixin2003";
wndcls.lpszMenuName=NULL;
吧这里的wndcls.lpfnWndProc=WinSunProc改为Main_OnCommand;
然后把那里的窗口函数全部替换,但是我怕你写错,最好在源程序上修改

;祝你行,
第2个回答  2010-08-18
MFC里处理窗口和控件不用switch语句,MFC是c++,你这个是对话框,建立mfc的时候选择“对话框程序”,建立好工程后选择资源视图,找到对话框的图形(一开始就有“确定”和“取消”两个按钮),然后直接从工具箱里托控件到对话框上,再为每个控件定义消息处理函数(双击一下这个控件,就自动声明了,你只需要添加函数体就好了)。至于那些按钮上显示的字,在按钮属性里就可以修改。

总之mfc的对话框制作过程就是先用工具箱把界面画出来,再添加控件的消息函数。

你要是想直接把你的sdk程序改成mfc程序是很难的,sdk是c的过程,mfc是c++过程,mfc对API进行了封装,直接改造很难。

如果你愿意,可以把源代码发给我,[email protected]。我尽量帮你改一改。改完了发给你,你参考一下。mfc和SDK根本就是两回事
第3个回答  2010-08-17
MFC把很多SDK的东西封装了 主要是了解消息映射 ,控件通过ID用绑定控件ID号
绑定控件的地方
void CVideoWiz2::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVideoWiz2)
DDX_Control(pDX, IDC_PREVIEW, m_PreviewScreen);//这句就是ID号和控件绑定
//}}AFX_DATA_MAP
}

//这里是消息映射
BEGIN_MESSAGE_MAP(CVideoWiz2, CPropertyPage)
//{{AFX_MSG_MAP(CVideoWiz2)
ON_WM_CREATE()
ON_BN_CLICKED(IDC_VIDEOFILTER, OnVideofilter)
ON_BN_CLICKED(IDC_VIDEOPIN, OnVideopin)
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
第4个回答  2010-08-17
给你个例子:
#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);

int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WinSunProc;
wndcls.lpszClassName="Weixin2003";
wndcls.lpszMenuName=NULL;
wndcls.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&wndcls);

HWND hwnd;
hwnd=CreateWindow("Weixin2003","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,
0,0,600,400,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);

MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}

LRESULT CALLBACK WinSunProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_CHAR:
char szChar[20];
sprintf(szChar,"char is %d",wParam);
MessageBox(hwnd,szChar,"weixin",0);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","weixin",0);
HDC hdc;
hdc=GetDC(hwnd);
TextOut(hdc,0,50,"计算机编程语言培训",strlen("计算机编程语言培训"));
ReleaseDC(hwnd,hdc);
break;
case WM_PAINT:
HDC hDC;
PAINTSTRUCT ps;
hDC=BeginPaint(hwnd,&ps);
TextOut(hDC,0,0,"维新培训",strlen("维新培训"));
EndPaint(hwnd,&ps);
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
第5个回答  2010-08-18
老大 MFC没有那个switch了 所有的东西都被封装了 你要学一下MFC机制才行啊

这样说你会晕的 很晕很晕
相似回答