vs2012怎样添加自定义资源

Red_Flame 2013-02-13 05:47:45
本人小白,刚想windows编程,看到是windows程序设计5版的书,第10中有个范例poeppoem,就是自己创建资源的问题,我创建了TEXT的资源,可为什么变成了text1.bin的东西,后缀为什么不是text类型的呢?导致范例还没有具体实现。。。
希望高手大神给我点拨下,谢谢,祝各位新年快乐!
...全文
411 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
傻子才伤悲 2013-11-16
本人同样刚自学windows编程,也遇到你说的问题,我的是VS2010 ,不过想来差别不大,跟VC6差别还是很大的。等下我也会开个帖子说下这个问题,这里先回复你吧,虽然你可能看不到了。 1.建立新win 32 project ,如图 2.关键的部分来了,也是和VC6不同的地方。假设你要将xx.txt作为资源,我选的自己桌面上的test.txt。右击 Resource Files -> add resource 出来的画面 应该是 很多帖子都是接下来选 custom 然后 Insert..."TEXT", Import.. 但是我发现我这么操作完了之后根本没有import这个选项。所以我这里直接就选 import 选项,而不是custom。然后选择你要import的文件,如图 确定以后,会弹出如下图: 这里需要你填写一个Resource Type ,假如你之前已经有了,就直接输入,没有的话在你输入后会给你自动建立一个自定义资源,也就是自动调用custom,是不是有点方便? 3.完成上述操作后,你站到resource view就会看到资源已经建立好了, 4.下面是测试代码

#include <windows.h>
#include "resource.h"
//IDR_TEXT1      TEXT    DISCARDABLE     "text.txt"
HINSTANCE hInst;

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
	HDC          hdc;
	PAINTSTRUCT  ps;
	RECT         rect;
	static char  *pText;
	static HGLOBAL  hResource;

	switch(message)
	{
	case WM_CREATE:
		hResource = LoadResource(hInst, FindResource(hInst, MAKEINTRESOURCE(IDR_TEXT1), TEXT("TEXT")));
		pText = (char*)LockResource(hResource);
		return 0;

	case WM_PAINT:
		hdc = BeginPaint(hwnd, &ps);
		//pText = (char*)LockResource(hResource);
		GetClientRect(hwnd, &rect);
		
		DrawTextA(hdc, pText, -1, &rect, DT_EXTERNALLEADING);
		EndPaint(hwnd, &ps);
		return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd, message, wparam, lparam);
}

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hpreinstance, PSTR cmdline, int showcmd)
{
	MSG msg;
	static TCHAR *szAppName = TEXT("ya~ha~");
	WNDCLASS wndclass;
	HWND hwnd;

	wndclass.cbClsExtra          = 0;
	wndclass.cbWndExtra          = 0;
	wndclass.hbrBackground       = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.hCursor             = LoadCursor(0, IDC_ARROW);
	wndclass.hIcon               = LoadIcon(0, IDI_APPLICATION);
	wndclass.hInstance           = hinstance;
	wndclass.lpfnWndProc         = WndProc;
	wndclass.lpszClassName       = szAppName;
	wndclass.lpszMenuName        = 0;
	wndclass.style               = CS_HREDRAW|CS_VREDRAW;

	hInst = hinstance;

	if(!RegisterClass(&wndclass))
	{
		MessageBox(0, szAppName, TEXT("sth wrong~~"), MB_ICONERROR);
	}

	hwnd = CreateWindow(szAppName, TEXT("kk"), WS_OVERLAPPEDWINDOW, 
		                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 
						0, 0, 
						hinstance, 0);
	
	ShowWindow(hwnd, showcmd);
	UpdateWindow(hwnd);

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

	return msg.wParam;
}
5.结果
  • 打赏
  • 举报
回复
相关推荐
发帖
VC/MFC
加入

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2013-02-13 05:47
社区公告

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