首先,这不是MFC.
这是我一直在研究的裁剪版GUI:

正如您所看到的,我已经(尝试)使用以下代码创建两个不同的组:Icon和Button:
index->hAddT.hwndIndex[2] = CreateWindowEx(NULL,L"BUTTON",L"Icon",WS_CHILD | WS_VISIBLE | BS_GROUPBOX,
200,135,120,170,WINDOWHANDLE,(HMENU)IDC_RADIOGROUP,(HINSTANCE)GetWindowLong(WINDOWHANDLE,GWL_HINSTANCE),NULL);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题,以及你可能看到的问题是,窗口只有一个单选按钮.这意味着用户不可能从Icon组中选择一个单选按钮,而从Button组中选择一个单选按钮.我已将每个单选按钮初始化为:
index->hAddT.hwndIndex[3] = CreateWindowEx(NULL,L"BUTTON",L"Information",WS_CHILD | BS_AUTORADIOBUTTON | WS_VISIBLE,
205,155,100,20,WINDOWHANDLE,(HMENU)IDC_RADIO1,(HINSTANCE)GetWindowLong(WINDOWHANDLE,GWL_HINSTANCE),NULL);
Run Code Online (Sandbox Code Playgroud)
我想以某种方式将"Icon"组的单选按钮与"按钮"组的单选按钮分开,如果这是有道理的,因此每个组都有一个单选按钮.这将如何成为可能,它是否需要我创建一个新的窗口和一个新的回调程序只是为了有一个额外的单选按钮.必须有另一种方法来分组这样的子项.
2个单独的单选按钮组以相同的形式WINAPI(无MFC) 该链接对我的目的没有任何用处.
我有作为Windows第五版的编程,由Charles Petzold旁边作为参考,他在Group Boxes部分中说"组框通常用于包含其他按钮控件",但是没有真正的例子.
我在这里问了这个问题 - 通过UpdateResource更新STRING TABLE(添加多个字符串)
现在我再问一遍,因为这次我可以在这个问题上添加更多细节.
过去一天我一直在尝试这个,或者说没有真正有用的东西.我希望结果是这样的(我在MSVS中手动添加了字符串):正如您所看到的,多个条目,它是"干净的",可以通过程序轻松访问!

现在,我的来源:
wstring buffer[5] = {L" Meow",L" I",L" Am",L" A",L" Dinosaur"}; // ignore the string
if (HANDLE hRes = BeginUpdateResource("Output.exe",TRUE))
{
for (int i = 0; i < 5; i++)
{
wchar_t * temp;
temp = new wchar_t[(buffer[i].length()+1)];
wcscpy(temp,buffer[i].c_str());
wcout << temp << endl;
UpdateResource(hRes,RT_STRING,MAKEINTRESOURCE(1),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
temp, 48); //buffer[i].length()+1
delete[] temp;
}
EndUpdateResource(hRes,FALSE);
}
Run Code Online (Sandbox Code Playgroud)
生产:

这是错的,因为它似乎只是将最后一个字符串添加到表中,而不是之前的字符串!
当我尝试修改源代码以使MAKEINTRESOURCE(1)现在为"MAKEINTRESOURCE(i)"时,结果如下图所示:

成功的事实是它添加了所有字符串,但它似乎创建了各种字符串表,这不是所期望的.虽然我注意到每张照片中的ID增加了16,这可能解释了一些问题.基本上,我希望字符串格式化为第一张图片(带有多个字符串),但不知道如何做到这一点.
谢谢您的帮助.
我的程序在Windows Vista Ultimate和Windows 7上运行完美,但在Windows XP上运行失败.
首先,我的应用程序创建一个系统文件的进程,它调用GetThreadContext(remote_thread)并将LPVOID值设置为值context-> Eip,然后检查从VirtualQueryEx设置的结构MEMORY_BASIC_INFORMATION中的值.
以下是VirtualQueryEx在调用时返回的值:
Windows XP
Windows 7的
Windows Vista
为什么当我在Windows XP上运行我的应用程序时,它没有分配基础,也没有分配保护,以及与Windows 7和Windows …
我已经尝试这样做了大约两天,没有成功.我一直在阅读许多PE文件格式教程无济于事.
我通过CreateFileMapping将32位可执行文件映射到内存中,效果很好.然后我的程序遍历节标题,并根据我的默认特征检查特征(以确保该节是可执行的并且是代码).如果为真,则程序返回指向该节头的(PIMAGE_SECTION_HEADER)指针(程序到目前为止工作正常).
现在我有了指针,结构中有两个特定的条目让我困惑,那就是PointerToRawData和VirtualAddress,当我输入条目时; VirtualSize = 4096,PointerToRawData = 1536.
从我在PE文档中读到的,是PointerToRawData是磁盘上的部分中数据的第一个字节(我是否正确?)的假定偏移量(RVA ???),并且是对齐值的倍数(512 ).问题是如何设置此值,以获取可用于访问节的数据的指针.在内存映射文件上,最好使用(VirtualAddress值+ imagebase值)来查找该节的第一个字节?
另一个混淆点是VirtualSize vs SizeOfRawData.这让我很困惑,因为在这篇文章中 - http://msdn.microsoft.com/en-us/library/ms809762.aspx,它说"SizeOfRawData字段(似乎有点用词不当)后来在结构中持有向上舍入值"但我的VirtualSize大于我的SizeOfRawData值,这导致我应该使用哪一个混淆.
该程序的目的是找到可执行部分(.text部分)并对该部分中的所有位执行按位操作,并在下一部分之前结束操作.
我不希望它看起来像我期待的勺子,我只是想要一些澄清.
感谢您的时间/帮助,非常感谢.