在阅读如何在C中初始化数组之后,特别是:
但是,不要忽视明显的解决方案:
int myArray [10] = {5,5,5,5,5,5,5,5,5,5};
我试过这样的事情:
#include <iostream>
class Something {
private:
int myArray[10];
public:
Something() {
myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
}
int ShowThingy(int what) {
return myArray[what];
}
~Something() {}
};
int main () {
Something Thing;
std::cerr << Thing.ShowThingy(3);
}
Run Code Online (Sandbox Code Playgroud)
我得到:
..\src\Something.cpp: In constructor 'Something::Something()':
..\src\Something.cpp:10:48: error: cannot convert '<brace-enclosed initializer list>' to 'int' in assignment
Run Code Online (Sandbox Code Playgroud)
在这种情况下显而易见的并不那么明显.我真的希望我的阵列的启动也更加动态.
我累了:
private:
int * myArray;
public:
Something() …Run Code Online (Sandbox Code Playgroud) 根据:http : //msdn.microsoft.com/zh-cn/library/windows/desktop/bb762102(v=vs.85).aspx
SetWindowSubclass原型是:
BOOL SetWindowSubclass(
__in HWND hWnd,
__in SUBCLASSPROC pfnSubclass,
__in UINT_PTR uIdSubclass,
__in DWORD_PTR dwRefData
);
Run Code Online (Sandbox Code Playgroud)
好吧,我明白了hWnd,pfnSubclass和dwRefData。
我找不到很好的信息,我该怎么设置uIdSubclass?
MSDN说:
子类ID。该ID与子类过程一起唯一标识一个子类。若要删除子类,请将子类过程和此值传递给RemoveWindowSubclass函数。该值通过uIdSubclass参数传递给子类过程。
好的,可以理解,但仍然可以从哪里获得此ID?是我创造的东西还是某个地方得到的东西?如果是我创建的东西,它应该是什么样?
我在C ++和Win32 API中进行此操作,仅此而已。
谢谢。
我无法让加速器工作.我正在使用C++.
设置并显示我的窗口后.
MENUITEMINFOW mAbout;
mAbout.cbSize = sizeof(MENUITEMINFO);
mAbout.fMask = MIIM_TYPE | MIIM_ID;
mAbout.wID = (UINT) ID_ABOUT;
mAbout.fType = MFT_STRING;
mAbout.dwTypeData = (LPWSTR)L"&About";
InsertMenuItemW(HelpMenu, 0, TRUE, &mAbout);
Run Code Online (Sandbox Code Playgroud)
我的菜单运行正常,并调用我的"关于"框,没有问题.
现在,在消息循环之前,我加载了加速器:
// Load accelerators.
HACCEL hAccelerators = LoadAcceleratorsW(hInstance, MAKEINTRESOURCEW(IDR_ACCELERATOR));
Run Code Online (Sandbox Code Playgroud)
然后我的主要消息循环:
while(GetMessageW(&msg, NULL, 0, 0) > 0) {
if (! TranslateAcceleratorW(msg.hwnd, hAccelerators, &msg)) {
TranslateMessage(&msg);
DispatchMessageW(&msg);
}
}
Run Code Online (Sandbox Code Playgroud)
我的WndProc消息句柄(再次,从菜单中工作)
case WM_COMMAND: {
if (HIWORD(wParam) == 0) {
if (LOWORD(wParam) == 101) {
testDialog(hInstance ,hWnd,(LPSTR)"Testing");
}
if (LOWORD(wParam) == ID_ABOUT) {
DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUTDIALOG), hWnd, &AboutDialogProc); …Run Code Online (Sandbox Code Playgroud) 快速提问,如何在Eclipse-Juno中启用Undo/Redo?
我在用:
Eclipse for Mobile Developers
Juno Service Release 1
Build id: 20120920-0800
Run Code Online (Sandbox Code Playgroud)
即使只是在编辑器中输入一些随机文本,Undo/Redo也会变灰并且键盘快捷键不起作用.没有撤消/重做我就无法工作.(上帝只知道有多少次把我的屁股拉出了火.)
我可以找到的撤消设置是:
窗口 - >首选项 - >常规 - >编辑器 - >文本编辑器 - >撤消历史记录大小.
它的值为200,我尝试将其更改为1000.
我曾尝试使用Google和Stack Overflow.有一个类似的问题,但它不是如何启用撤消/重做.这是Eclipse的干净安装.
是否有一个启用检查我错过了我错过的这些选项屏幕中的某个地方?
我正在使用带有"经典"主题的Java透视图.
我的java -version报告
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
如果没有解决方案,并且这是一个错误(并且非常糟糕),我可以将旧的3.7与上述版本的Java一起使用吗?我正在学习Java,所以我可以编写Android应用程序,但我还没有安装SDK.
我一直都在这一个,而我只是陷入困境.我一直在构建一个项目,我想将一个文本文件作为资源嵌入到可执行文件中.我理解这个"应该"如何工作的所有基础知识,但由于某种原因,它不是.所以,让我从目前为止开始,也许可以解决问题.
这里有两个函数,第一个,EnumResNameProc试图调试我自己的问题,第二个,LoadFileInResource是我试图工作的函数.这有点凌乱,因为当我开始遇到问题时,我正处于构建它的过程中.
确切的问题是,FindResourceExA返回NULL,我确实丢失了.我知道这是一个错误,返回代码是1813,"资源未找到".
我在这个项目中有其他资源,我有一个版本节点,一个mainifest节点,(其中,我没有直接阅读)我有一个图标节点(我正在申请我的窗口系统菜单图标)和一个位图(那个我正在加载纹理.)这些都有定义的类型,例如,Bitmap的类型是12.现在,我试图加载一个文本文件,其中"用户定义"类型为10.我知道数据是INSIDE可执行文件,因为如果我在文本编辑器中打开它...(是的,我尝试过)它存在,因此,它被包含在内.
第一个函数是尝试遍历所有文件资源以尝试查找数据.它找到了类型2,3,14,16和24.但不是10.我已经排除了这些其他类型作为上述资源.(位图= 2),(icon = 3),(RT_ICON(3)+ RT_ICON_GROUP(11)= 14)(版本= 16),(清单= 24).用户定义应该是类型10,它没有找到它.
我的Resources.rc文件包括以下内容:
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDR_textfile1 textfile ".\\Data\\World.txt"
Run Code Online (Sandbox Code Playgroud)
这定义了要加载的文件(再次,我知道这有效,我可以在可执行文件中看到代码的文本.)
我的resources.h文件定义了以下内容:
#define IDR_textfile1 102
Run Code Online (Sandbox Code Playgroud)
因此,它被定义,包含,构建,并且所有其他资源都可以工作,但FindResourceExA在此处返回NULL.所有包含文件都排成一行,(如果不是,我会收到警告和错误.)
所以,问题是,我正确地调用了FindResourceExA吗?它被定义为:
WINBASEAPI HRSRC WINAPI FindResourceExA(HINSTANCE,LPCSTR,LPCSTR,WORD);
Run Code Online (Sandbox Code Playgroud)
好吧,我已经尝试过HINSTANCE,null,hInstance在WinMain中传递给我的Windows,甚至是GetModuleHandleA的结果,没有骰子.
对于LPCSTR,这是资源ID,我已经尝试了你看到的,MAKEINTRESOURCE(IDR_textfile1),我也试过硬编码ID号,在这种情况下,102.没有骰子.对于类型,我已经厌倦了其他变化,根据微软的正确值应为10.这就是为什么我创建EnumResNameProc,试图查看其他ID存在,从0到500,我回来的是上面列出的那些,关于机会的事情被定义为有趣.没有骰子.
我已经尝试了FindResourceExA FindResourceA(有和没有'Ex')No Dice.
我知道它就在那里,我已经学到了更多,然后我关心这个功能,但是它找不到它,而且我不知道还有什么可以尝试.
至于开发环境,我使用MinGW + Eclipse + CDT,并使用GCC工具中的winres来构建资源对象文件.我已经在winres中查找错误,看看它是否在二进制类型上做了一些有趣的事情.(即使我正在加载文本文件,这也是未定义的内容.)哦,我还尝试将文件重新保存为ANSI,UTF-8和UNICODE,以防文本的二进制格式重要.
我不知所措,我不知道还有什么可以尝试的.我知道数据存在,我只是不知道为什么它不会访问它.Windows API调用既不能查看数据,也不能以screwey方式编码数据,因此无法访问它.
我还能尝试什么?
BOOL CALLBACK EnumResNameProc (
HMODULE hModule,
LPCTSTR lpszType,
LPTSTR lpszName,
LONG_PTR lParam)
{
std::cerr << "WTF INFO BEGIN here! \n";
// std::string info = lpszName;
int a = lParam;
std::cerr << "We found something: " << …Run Code Online (Sandbox Code Playgroud) c++ ×4
winapi ×3
accelerator ×1
arrays ×1
class ×1
eclipse ×1
eclipse-juno ×1
mingw ×1
resources ×1