当前位置: 首页 > 工具软件 > RadASM > 使用案例 >

RadAsm模板修改

岑驰
2023-12-01
 今天再重头来看MFC,为的是完成一个软件。好久没有做了,已经找不到头绪了。所以重头温习一下MFC。
采用RadAsm这个编辑器来做吧!
首先建立了一个cpp的应用程序,居然发现了,其中有很多的问题。
如(1)不支持菜单
  (2)不支持标准的c库
  (3)没有窗口的重绘处理部分
这样的模板对于初学者来说太难了吧!算了,改改吧!
打开模板文件,按照说明,进行修改。
首先修改编译的设置,原来的模板在发行模式下是不支持资源的,要支持资源只需要修改
13=5,O,$B/LINK @libs.txt /SUBSYSTEM:WINDOWS /DEBUG /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5",3
为13=5,O,$B/LINK @libs.txt /SUBSYSTEM:WINDOWS /DEBUG /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5",3,4
这样就支持资源了,当然支持菜单了。
删除原来模板中的
#pragma comment(linker, "/ENTRY:EntryPoint")
使其支持标准的输入输出库stdio.h
添加代码:
 HDC hdc;
 PAINTSTRUCT ps;

 case WM_PAINT:
  hdc=BeginPaint(hwnd,&ps);
                //在这里添加绘制窗口代码
                EndPaint(hwnd,&ps);
          return 0;
最后为了完善这个模板,干脆再加入对WM_COMMAND的处理。
好了,下面是最终的模板代码部分内容:
Win32 App
test
Window app
[*BEGINPRO*]
[*BEGINDEF*]
[MakeDef]
Menu=0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0
1=4,O,$D/RC /v,1
2=3,O,$B/CL /c /O1 /GA /GB /w /TC /nologo /Zi /Fo /I"$I",2
3=5,O,$B/LINK @libs.txt /SUBSYSTEM:WINDOWS /RELEASE /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5",3,4
4=0,0,,5
5=rsrc.obj,O,$B/CVTRES,rsrc.res
6=*.obj,O,$B/CL /c /O1 /GA /GB /w /TC /nologo /Fo /I"$I",*.cpp
7=0,0,"$E/OllyDbg",5
11=4,O,$D/RC /v,1
12=3,O,$B/CL /c /O1 /GA /GB /w /TC /nologo /Zi /Fo /I"$I",2
13=5,O,$B/LINK @libs.txt /SUBSYSTEM:WINDOWS /DEBUG /VERSION:4.0 /LIBPATH:"$L" /OUT:"$5",3,4
14=0,0,,5
15=rsrc.obj,O,$B/CVTRES,rsrc.res
16=*.obj,O,$B/CL /c /O1 /GA /GB /w /TC /nologo /Fo /I"$I",*.cpp
17=0,0,"$E/OllyDbg",5
[MakeFiles]
0=test.rap
1=test.rc
2=test.cpp
3=test.obj
4=test.res
5=test.exe
6=test.def
7=test.dll
8=test.txt
9=test.lib
10=test.mak
11=test.c
12=test.com
13=test.ocx
14=test.idl
15=test.tlb
[Resource]
[StringTable]
[Accel]
[VerInf]
[Group]
Group=Added files,Assembly,Resources,Misc,Modules
1=2
2=2
3=
[*ENDDEF*]
[*BEGINTXT*]
test.cpp
#include "windows.h"
#include "test.h"
//#pragma comment(linker, "/ENTRY:EntryPoint")

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

void EntryPoint()
{
 ExitProcess(WinMain(GetModuleHandle(NULL), NULL, GetCommandLine(), SW_SHOWNORMAL));
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
 static TCHAR szAppName[]=TEXT("Windows");
 HWND hwnd;
 MSG msg;
 WNDCLASS wndclass;
 wndclass.style=CS_HREDRAW|CS_VREDRAW;
 wndclass.lpfnWndProc=WndProc;
 wndclass.cbCl***tra=0;
 wndclass.cbWndExtra=0;
 wndclass.hInstance=hInstance;
 wndclass.hIcon=LoadIcon(NULL, IDI_APPLICATION);
 wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
 wndclass.lpszMenuName=NULL;
 //wndclass.lpszMenuName=(LPCSTR)IDR_MENU;//如果要使用菜单,修改这里,IDR_MENU是你的菜单的名字。
        wndclass.lpszClassName=szAppName;
 if(!RegisterClass(&wndclass))
 {
  MessageBox(NULL,TEXT("This program requires Windows NT!"),szAppName,MB_ICONERROR);
  return 0;
 }
 hwnd=CreateWindow(szAppName,      //window class name
       TEXT("Windows Program"),  //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)
{
 int wmID,wmEvent;
        HDC hdc;
        PAINTSTRUCT ps;
        switch(message)
 {
 case WM_CREATE:
  //Put your code here
  return 0;
        case WM_COMMAND:
             wmID=LOWORD(wParam);
             wmEvent=HIWORD(wParam);
             switch(wmID)
             {
                 //在这里添加你的命令处理代码
             }
 case WM_PAINT:
  hdc=BeginPaint(hwnd,&ps);
                //在这里添加绘制窗口代码
                EndPaint(hwnd,&ps);
          return 0;

 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return DefWindowProc(hwnd,message,wParam,lParam);
}
[*ENDTXT*]
[*BEGINTXT*]
libs.txt
kernel32.lib
comctl32.lib
user32.lib
gdi32.lib
comdlg32.lib
shell32.lib
winmm.lib
[*ENDTXT*]
[*ENDPRO*]

转载于:https://www.cnblogs.com/jh0262/archive/2007/03/13/2946853.html

 类似资料: